我有一个名为的项目文件夹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
或-Include
.
最好的方法是什么?