एक निश्चित फ़ोल्डर के नीचे ऊपरी केस अक्षर वाले सभी फ़ोल्डर ढूंढें


2

मैं उन सभी फ़ोल्डरों को खोजना चाहता हूं जिनमें कम से कम एक ऊपरी केस अक्षर हो और जो एक निश्चित फ़ोल्डर के नीचे हों।

मैंने इस पावर शेल के साथ अब तक खेला है:

Get-ChildItem -Recurse
    | ?{ $_.PSIsContainer }
    | Where-Object {$_.FullName -match "^.*?refs\\.*[A-Z]+.*$"}
    | Select-Object FullName

लेकिन यह इसमें विफल रहता है कि यह उन सभी फ़ोल्डरों को सूचीबद्ध करता है, जिनके नाम पर ऊपरी केस अक्षर कहीं भी हैं। मैं केवल सबफ़ोल्डर्स चाहता हूँ refs सूचीबद्ध होने वाला।

मेरी गलती कहाँ है? जब मैं एक रेगेक्स परीक्षण इंजन में रेगेक्स की कोशिश करता हूं, तो यह केवल सबफ़ोल्डर्स की सही सूची देता है refs। जाहिरा तौर पर पावर शेल इंजन अलग तरीके से काम करता है?


क्या आप मिलान के लिए नमूना निर्देशिका नाम प्रदान कर सकते हैं?
WeatherForecastingRat

जवाबों:


3

यह वास्तव में अजीब है। ऐसा लगता है -Match ऑपरेटर इस बात की परवाह नहीं करेगा कि रेगेक्स में क्या है (या शायद एक अलग स्पष्टीकरण है)।

फिर भी, बदल रहा है -Match सेवा मेरे -CMatch (केस-संवेदी मैच) मा नमूना निर्देशिका के लिए काम कर रहा है:

Get-ChildItem -Recurse -Directory | Where-Object FullName -CMatch "^.*?refs\\.*[A-Z]+.*$" | select Fullname

आप भी उपयोग कर सकते हैं [regex] अधिक नियंत्रण के लिए टाइप त्वरक।

$regex = [regex]"^.*?refs\\.*[A-Z]+.*$"
$match = $regex.Match('C:\Users\user\refs\whatever\test1\test2\test3')

हाँ cmatch अच्छी तरह से काम। संकेत के लिए धन्यवाद!
Florian Peschka
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.