仅具有Powershell get-childitem返回文件


76

我想递归使用get-childitem,但只让它返回文件而不是目录。我拥有的最佳解决方案似乎并不自然:

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

Answers:


76

尝试这个:

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

4
如果要排除容器,则可以省略*。*, 对?
MDMoore313'9

99

在Powershell 3.0中,它更简单,

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

这更短,

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

2

在PowerShell 3.0中,您还可以使用新添加的-Attributes参数
(以及逻辑运算符)

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

打高尔夫球

dir -r -Attributes !D

-4

在powershell 2.0中,我想到的最好,最简单的解决方案是包括所有带有扩展名的文件:

get-childitem -Recurse -include *.*

文件夹没有扩展名,因此它们被排除在外,请注意不要使用扩展名为文件的文件。


10
这(关于目录)是不正确的。没有什么可以阻止您拥有扩展名的目录
Romeo Ninov
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.