web-dev-qa-db-ja.com

Get-ChildItemを使用して特定の名前のディレクトリにあるファイルを見つける方法は?

topfolderというプロジェクトフォルダーがあり、特定のパターンに一致するすべてのサブフォルダー内のすべてのファイルを検索したい。フォルダーの名前のどこかにfooが含まれている場合、その中にあるすべてのファイルを一覧表示します。

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

gci .\topfolder -rec -filter *foo*

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

  1. 実際にfooを含むファイルのみがリストされます(foo-likeフォルダーにanyファイルが欲しい)。
  2. このフィルターに一致するディレクトリも結果セットの一部になります。

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

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

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

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

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

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

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

19
Borek Bernard

Includeの代わりにFilterパラメーターを使用します。

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