Get-ChildItem -Path c:/test -recurse -filter *.xml | Group-Object -Property Directory
并得到一个更好的表,你可以添加-NoElement
到Group-Object
.
要排除某些目录,请尝试:
$excludedPaths = @("Windows", "Program Files", "Program Files (x86)"); $searchPaths = Get-ChildItem -Path C:\ -Directory | Where-Object { $excludedPaths -notcontains $_.name } Get-ChildItem -Path $searchPaths -recurse -filter *.xml | Group-Object -Property Directory
更新:
根据Get-ChildItem文档,-filter
比-include
仅筛选一个模式更有效.(如果你过滤更多的模式,-filter
不起作用,你必须使用-include
)
排除整个子树:
-exclude
不起作用,因为它应用于每个文件,它不会修剪整个树,似乎过滤器只匹配文件名,而不是目录
你的Where-Object
工作不起作用,因为$_.Directory
什么都没有(不知道为什么,我没有找到任何文件)
即使查看另一个属性($_.FullName
似乎按照您的意图),这只会删除目录本身,而不是从目录开始的路径.您需要对过滤器集中的每个字符串执行字符串前缀匹配(使用-imatch或-ilike)