73

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

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

4 ответа4

95

В Powershell 3.0 это проще,

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

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

gci -ad # alias for -Directory
gci -af # alias for -File
72

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

gci . *.* -rec | where { ! $_.PSIsContainer }
2

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

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

Golfed

dir -r -Attributes !D
-4

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

get-childitem -Recurse -include *.*

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .