2012-04-03 24 views
16

topfolder adlı bir proje klasörüm var ve tüm alt klasörlerdeki tüm dosyaları belirli bir desenle eşleşen tüm dosyaları bulmak istiyorum, ör. Klasör, adında herhangi bir yerde foo içeriyorsa, içindeki tüm dosyaları listelemek istiyorum. Get-ChildItem'i kullanarak dizinlerdeki dosyaları nasıl adlandırılır?

Ben böyle bir şey denedim:

gci .\topfolder -rec -filter *foo* 

ama iki sorun vardır:

  1. Sadece dosyaları aslında foo (I foo benzeri klasöründe herhangi dosya istiyorum) listelenir içeren.
  2. Bu filtreyle eşleşen dizinler de sonuç kümesinin bir parçası olacaktır.

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

    ama bu hiç çalışmıyor - o desen topfolder\foobar ancak topfolder\subfolder\foobar maç olacak böylece görünüşte maçı bir yolun yalnızca tek bir segment joker:

Sonra bu çalıştı.

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

Bu işler ancak iki kez gci aramak için bir atık gibi görünüyor ve ben sadece etmedim umut':

buldum tek yolu şimdiye kadar bu iki katım Get-ChildItem kullanmaktı -Path, -Filter veya -Include gibi bir şey için doğru joker ifadesi bulun.

Bunu yapmanın en iyi yolu nedir?

cevap

18

ben dahil yerine Filtre parametresini kullanmak istiyorsunuz, gerçekleştirdiği çok fatser

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

Nasıl benim son örnekten farklıdır? Denememden daha yavaş olmayacak mı? – Borek

+0

Üzgünüm, kör olmalıyım;) –

+0

Sadece güncellenmiş bir yanıt gönderen –

İlgili konular