2012-04-03 10 views
16

मेरे पास topfolder नामक एक प्रोजेक्ट फ़ोल्डर है और मैं सभी सबफ़ोल्डर में सभी फ़ाइलों को ढूंढना चाहता हूं जो एक निश्चित पैटर्न से मेल खाते हैं, उदा। जब फ़ोल्डर में foo इसके नाम पर कहीं भी है, तो मैं इसके अंदर सभी फाइलों को सूचीबद्ध करना चाहता हूं।Get-ChildItem का उपयोग करके कुछ नामों वाली निर्देशिकाओं में फ़ाइलों को कैसे ढूंढें?

मैं की तरह कुछ करने की कोशिश की:

gci .\topfolder -rec -filter *foo* 

लेकिन यह दो समस्याएं हैं:

  1. केवल फ़ाइलें वास्तव में युक्त foo सूचीबद्ध किया जाएगा (मैं foo की तरह फ़ोल्डर में कोई भी फ़ाइल चाहते हैं)।
  2. इस फ़िल्टर से मेल खाने वाली निर्देशिका परिणाम सेट का हिस्सा भी होगी।

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

    लेकिन यह बिल्कुल काम नहीं करता है - जाहिरा तौर पर मैच केवल एक रास्ता के एक एकल खंड वाइल्डकार्ड ताकि पैटर्न topfolder\foobar नहीं लेकिन topfolder\subfolder\foobar मिलान हो जाएगा:

तब मैं इस कोशिश की।

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

यह काम करता है, लेकिन यह gci दो बार फोन करने के लिए एक बेकार की तरह लगता है और मुझे आशा है कि मैं सिर्फ नहीं था ':

एक ही रास्ता मैं पाया है अब तक Get-ChildItem दो बार उपयोग करने के लिए, इस तरह था -Path, -Filter या -Include जैसे कुछ के लिए सही वाइल्डकार्ड अभिव्यक्ति नहीं ढूंढें।

ऐसा करने के लिए सबसे अच्छा तरीका क्या है?

उत्तर

18

मैं फ़िल्टर पैरामीटर के बजाय प्रयोग करेंगे शामिल करें, यह प्रदर्शन बहुत fatser

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

यह मेरे पिछले उदाहरण से अलग है? क्या यह मेरे प्रयास से भी धीमा नहीं होगा? – Borek

+0

क्षमा करें, मैं अंधा रहा होगा;) –

+0

बस एक अद्यतन जवाब –

संबंधित मुद्दे

 संबंधित मुद्दे