我有一个名为topfolder
的项目文件夹,我想查找所有子文件夹中与特定模式匹配的所有文件,例如当文件夹名称中包含foo
时,我想列出其中的所有文件。
我尝试过类似的事情:
gci .\topfolder -rec -filter *foo*
但它有两个问题:
foo
的文件(我希望任何文件位于类似foo的文件夹中)。然后我尝试了这个:
gci .\topfolder\*foo* -include *.*
但这根本不起作用 - 显然,通配符只匹配路径的一个段,因此模式将匹配topfolder\foobar
但不匹配topfolder\subfolder\foobar
。
到目前为止,我发现的唯一方法是使用Get-ChildItem两次,如下所示:
gci .\topfolder -rec -include *foo* | where { $_.psiscontainer } | gci
这样可行,但两次调用gci
似乎是浪费,我希望我找不到-Path
,-Filter
或{{1}这样的正确通配符表达式}}
最好的方法是什么?
答案 0 :(得分:19)
我会使用Filter参数而不是Include,它会执行很多胖子
gci .\topfolder -rec -filter *foo* | where { $_.psiscontainer } | gci