2012-04-03 11 views
16

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:

  1. tylko pliki rzeczywiście zawierający foo zostaną wymienione (Chcę dowolny plik w folderze foo-like).
  2. 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?

Odpowiedz

18

chciałbym użyć parametru filtra zamiast Include, wykonuje wiele fatser

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

Czym różni się od mojego ostatniego przykładu? Czy nie będzie wolniejsza od mojej próby? – Borek

+0

Przepraszam, musiałem być ślepy;) –

+0

Właśnie wysłałem zaktualizowaną odpowiedź –

Powiązane problemy