19

という名前のプロジェクト フォルダーがtopfolderあり、特定のパターンに一致するすべてのサブフォルダー内のすべてのファイルを検索しfooたい。

私は次のようなものを試しました:

gci .\topfolder -rec -filter *foo*

しかし、次の 2 つの問題があります。

  1. 実際に含まれているファイルのみfooがリストされます(fooのようなフォルダーにあるファイルが必要です)
  2. このフィルタに一致するディレクトリも結果セットの一部になります。

それから私はこれを試しました:

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

しかし、それはまったく機能しません。明らかに、ワイルドカードはパスの単一セグメントのみに一致するため、そのパターンは一致しますが一致topfolder\foobarしませんtopfolder\subfolder\foobar

これまでに見つけた唯一の方法は、次のように Get-ChildItem を 2 回使用することでした。

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

これは機能しますが、2 回呼び出すのは無駄のように思えます。またはのようなgci適切なワイルドカード表現が見つからなかったことを願っています。-Path-Filter-Include

それを行う最善の方法は何ですか?

4

1 に答える 1

20

インクルードの代わりに Filter パラメーターを使用すると、よりファットなパフォーマンスが得られます

gci .\topfolder -rec -filter *foo* | where { $_.psiscontainer } | gci
于 2012-04-03T14:42:48.187 に答える