2010-06-09 17:13:59 +0000 2010-06-09 17:13:59 +0000
79
79

есть только файлы Powershell, возвращающие детские элементы.

Я хотел бы использовать get-childitem рекурсивно, но только чтобы он возвращал файлы, а не каталоги. Лучшее решение, которое у меня есть, просто не кажется естественным:

gci . *.* -rec | where { $_.GetType().Name -eq "FileInfo" }

Ответы (4)

109
109
109
2013-01-24 21:16:24 +0000

В Powershell 3.0 она проще,

gci -Directory #List only directories
gci -File #List only files

Это еще короче,

gci -ad # alias for -Directory
gci -af # alias for -File
78
78
78
2010-06-09 18:06:03 +0000

Попробуй это:

gci . *.* -rec | where { ! $_.PSIsContainer }
3
3
3
2014-05-19 17:52:55 +0000

В PowerShell 3.0 вы также можете использовать недавно добавленный параметр -Attributes параметр (вместе с логическими операторами)

Get-ChildItem -Recurse -Attributes !Directory+!System

Golfed

dir -r -Attributes !D
-5
-5
-5
2015-05-07 11:27:01 +0000

В powershell 2.0 лучшим и простым решением, которое я придумал, является включение всех файлов с расширением:

get-childitem -Recurse -include *.*

папки не имеют расширения, поэтому они исключаются, остерегайтесь файлов с расширением по имени.

Похожие вопросы

2
10
11
14
4