Mam folder projektu o nazwie topfolder
i chcę znaleźć wszystkie pliki we wszystkich podfolderach, które pasują do określonego wzorca, np. kiedy folder zawiera foo
w dowolnym miejscu w jego nazwie, chcę wyświetlić listę wszystkich plików w nim zawartych.Jak znaleźć pliki w katalogach o określonej nazwie za pomocą Get-ChildItem?
Próbowałem coś takiego:
gci .\topfolder -rec -filter *foo*
ale ma dwa problemy:
- tylko pliki rzeczywiście zawierający
foo
zostaną wymienione (Chcę dowolny plik w folderze foo-like). - Katalogi pasujące do tego filtra będą również częścią zestawu wyników.
Potem próbowałem to:
gci .\topfolder\*foo* -include *.*
ale to nie działa w ogóle - widocznie symboli wieloznacznych tylko jeden segment ścieżki tak, że wzór będzie pasował topfolder\foobar
ale nie topfolder\subfolder\foobar
.
Jedynym sposobem znalazłem do tej pory było użyć Get-ChildItem dwukrotnie, podobnie jak to:
gci .\topfolder -rec -include *foo* | where { $_.psiscontainer } | gci
To działa, ale wydaje się, że odpady zadzwonić gci
dwa razy i mam nadzieję, że po prostu nie zrobił” t znaleźć prawidłowe wyrażenie wieloznaczne dla czegoś takiego jak -Path
, -Filter
lub -Include
.
Jaki jest najlepszy sposób na zrobienie tego?
Czym różni się od mojego ostatniego przykładu? Czy nie będzie wolniejsza od mojej próby? – Borek
Przepraszam, musiałem być ślepy;) –
Właśnie wysłałem zaktualizowaną odpowiedź –