Я хотел бы использовать get-childitem рекурсивно, но только чтобы он возвращал файлы, а не каталоги. Лучшее решение, которое у меня есть, просто не кажется естественным:
gci . *.* -rec | where { $_.GetType().Name -eq "FileInfo" }
Я хотел бы использовать get-childitem рекурсивно, но только чтобы он возвращал файлы, а не каталоги. Лучшее решение, которое у меня есть, просто не кажется естественным:
gci . *.* -rec | where { $_.GetType().Name -eq "FileInfo" }
Ответы:
В Powershell 3.0 это проще,
gci -Directory #List only directories
gci -File #List only files
Это еще короче,
gci -ad # alias for -Directory
gci -af # alias for -File
В PowerShell 3.0 вы также можете использовать только что добавленный -Attributes
параметр
(вместе с логическими операторами)
Get-ChildItem -Recurse -Attributes !Directory+!System
Golfed
dir -r -Attributes !D
В PowerShell 2.0 лучшее и простое решение, которое я придумал, - включить все файлы с расширением:
get-childitem -Recurse -include *.*
папки не имеют расширения, поэтому они исключены, остерегайтесь файлов с именами без расширения.