让 Powershell get-childitem 仅返回文件

让 Powershell get-childitem 仅返回文件

我想递归使用 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 *.*

文件夹没有扩展名,因此被排除,请注意没有扩展名的文件。

相关内容