我如何只使用Get获取目录

我正在使用PowerShell 2.0,并且想要分出特定路径的所有子目录。 以下命令输出所有文件和目录,但我无法弄清楚如何过滤掉这些文件。

Get-ChildItem c:mypath -Recurse

我试过使用$_.Attributes来获取属性,但是我不知道如何构建一个System.IO.FileAttributes的文字实例来比较它。 在cmd.exe它会

dir /b /ad /s

对于小于3.0的PowerShell版本:

Get-ChildItem返回的FileInfo对象具有“base”属性PSIsContainer 。 您只想选择这些项目。

Get-ChildItem -Recurse | ?{ $_.PSIsContainer }

如果你想要目录的原始字符串名称,你可以这样做

Get-ChildItem -Recurse | ?{ $_.PSIsContainer } | Select-Object FullName

对于PowerShell 3.0及更高版本:

dir -Directory

在PowerShell 3.0中,它更简单:

Get-ChildItem -Directory #List only directories
Get-ChildItem -File #List only files

Get-ChildItem -dir #lists only directories
Get-ChildItem -file #lists only files

如果您更喜欢别名,请使用

ls -dir #lists only directories
ls -file #lists only files

要么

dir -dir #lists only directories
dir -file #lists only files

为了递归子目录,添加-r选项。

ls -dir -r #lists only directories recursively
ls -file -r #lists only files recursively 

测试PowerShell 4.0,PowerShell 5.0(Windows 10)和PowerShell Core 6.0(Windows 10,Mac和Linux)。

链接地址: http://www.djcxy.com/p/29095.html

上一篇: How do I get only directories using Get

下一篇: Setting Windows PowerShell path variable