2012-04-03 24 views
16

我有一個名爲topfolder的項目文件夾,我想查找所有符合特定模式的子文件夾中的所有文件,例如,當文件夾名稱中包含foo時,我想列出其中的所有文件。如何使用Get-ChildItem在具有特定名稱的目錄中查找文件?

我想是這樣的:

gci .\topfolder -rec -filter *foo* 

但它有兩個問題:

  1. 只有文件實際上包含foo將上市(我想任何文件FOO類文件夾)。
  2. 與此過濾器匹配的目錄也將成爲結果集的一部分。

然後我嘗試這樣的:

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

但是,這並不在所有的工作 - 顯然通配符匹配只有一個路徑的一個段,這樣模式將匹配topfolder\foobar但不topfolder\subfolder\foobar

我發現的唯一辦法,到目前爲止是使用Get-ChildItem兩次,這樣的:

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

這工作,但它似乎是一種浪費調用gci兩次,我希望我只是沒」找到正確的通配符表達式,例如-Path-Filter-Include

這樣做的最好方法是什麼?

回答

18

我會使用過濾器參數,而不是包括,它執行得fatser

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

它是如何從我的最後一個例子有什麼不同?這不會比我的嘗試慢嗎? – Borek 2012-04-03 15:02:01

+0

對不起,我一定是盲目的;) – 2012-04-03 15:08:57

+0

剛發佈了一個更新的答案 – 2012-04-03 15:25:00

相關問題