如何使用Get-ChildItem在具有特定名称的目录中查找文件?

时间:2012-04-03 14:10:25

标签: powershell get-childitem

我有一个名为topfolder的项目文件夹,我想查找所有子文件夹中与特定模式匹配的所有文件,例如当文件夹名称中包含foo时,我想列出其中的所有文件。

我尝试过类似的事情:

gci .\topfolder -rec -filter *foo*

但它有两个问题:

  1. 仅列出实际包含foo的文件(我希望任何文件位于类似foo的文件夹中)。
  2. 与此过滤器匹配的目录也将成为结果集的一部分。
  3. 然后我尝试了这个:

    gci .\topfolder\*foo* -include *.*
    

    但这根本不起作用 - 显然,通配符只匹配路径的一个段,因此模式将匹配topfolder\foobar但不匹配topfolder\subfolder\foobar

    到目前为止,我发现的唯一方法是使用Get-ChildItem两次,如下所示:

    gci .\topfolder -rec -include *foo* | where { $_.psiscontainer } | gci
    

    这样可行,但两次调用gci似乎是浪费,我希望我找不到-Path-Filter或{{1}这样的正确通配符表达式}}

    最好的方法是什么?

1 个答案:

答案 0 :(得分:19)

我会使用Filter参数而不是Include,它会执行很多胖子

gci .\topfolder -rec -filter *foo* | where { $_.psiscontainer } | gci