У меня есть папка проекта с именем 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
.
Каков наилучший способ сделать это?