2012-04-03 9 views
16

Ho una cartella di progetto denominata topfolder e voglio trovare tutti i file in tutte le sottocartelle che corrispondono a un determinato modello, ad es. quando la cartella contiene foo ovunque nel suo nome, voglio elencare tutti i file al suo interno.Come trovare i file nelle directory con un certo nome usando Get-ChildItem?

ho provato qualcosa di simile:

gci .\topfolder -rec -filter *foo* 

ma ha due problemi:

  1. solo i file in realtà contenente saranno elencati foo (voglio qualsiasi file nella cartella foo-like).
  2. Anche le directory che corrispondono a questo filtro faranno parte del set di risultati.

Poi ho provato questo:

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

ma che non funziona affatto - a quanto pare caratteri jolly partita solo un singolo segmento di un percorso in modo che modello corrisponderà topfolder\foobar ma non topfolder\subfolder\foobar.

L'unico modo che ho trovato finora è stato quello di utilizzare Get-ChildItem per due volte, in questo modo:

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

Questo funziona ma sembra uno spreco di chiamare gci due volte e spero di appena didn' t trovare un'espressione jolly giusta per qualcosa come -Path, -Filter o -Include.

Qual è il modo migliore per farlo?

risposta

18

Vorrei utilizzare il parametro Filter, invece di includere, esegue molto fatser

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

Come è diverso dal mio ultimo esempio? Non sarà ancora più lento del mio tentativo? – Borek

+0

Spiacente, devo essere stato cieco;) –

+0

Ho appena postato una risposta aggiornata –

Problemi correlati