我想递归使用 get-childitem,但只返回文件而不是目录。我最好的解决方案似乎不太自然:
gci . *.* -rec | where { $_.GetType().Name -eq "FileInfo" }
答案1
尝试这个:
gci . *.* -rec | where { ! $_.PSIsContainer }
答案2
在 Powershell 3.0 中,它更简单,
gci -Directory #List only directories
gci -File #List only files
这甚至更短,
gci -ad # alias for -Directory
gci -af # alias for -File
答案3
当有人将文件夹命名为 xxx.PDF 时,此方法不起作用:
get-childitem -Recurse -include *.pdf
那么你可以这样做:
Get-ChildItem -Recurse -Include *.pdf | where { ! $_.PSIsContainer }
答案4
在 powershell 2.0 中我想到最好、最简单的解决方案是包含所有带有扩展名的文件:
get-childitem -Recurse -include *.*
文件夹没有扩展名,因此被排除,请注意没有扩展名的文件。