How do I get only directories using Get
I'm using PowerShell 2.0 and I want to pipe out all the subdirectories of a certain path. The following command outputs all files and directories, but I can't figure out how to filter out the files.
Get-ChildItem c:mypath -Recurse
I've tried using $_.Attributes
to get the attributes but then I don't know how to construct a literal instance of System.IO.FileAttributes
to compare it to. In cmd.exe
it would be
dir /b /ad /s
For PowerShell versions less than 3.0:
The FileInfo
object returned by Get-ChildItem
has a "base" property, PSIsContainer
. You want to select only those items.
Get-ChildItem -Recurse | ?{ $_.PSIsContainer }
If you want the raw string names of the directories, you can do
Get-ChildItem -Recurse | ?{ $_.PSIsContainer } | Select-Object FullName
For PowerShell 3.0 and greater:
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
If you prefer aliases, use
ls -dir #lists only directories
ls -file #lists only files
or
dir -dir #lists only directories
dir -file #lists only files
To recurse subdirectories as well, add -r
option.
ls -dir -r #lists only directories recursively
ls -file -r #lists only files recursively
Tested on PowerShell 4.0, PowerShell 5.0 (Windows 10) and PowerShell Core 6.0 (Windows 10, Mac and Linux).
链接地址: http://www.djcxy.com/p/29096.html上一篇: 针对PowerShell的x64与x86变异进行编程的最佳方式是什么?
下一篇: 我如何只使用Get获取目录