Я хотів би використовувати 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
Гольф
dir -r -Attributes !D
У powershell 2.0 найкращим і найпростішим рішенням, який я придумав, є включення всіх файлів з розширенням:
get-childitem -Recurse -include *.*
папки не мають розширення, тому вони виключаються, остерігайтеся файлів, не названих розширенням.