विंडोज के बराबर ls * (तारांकन) निर्देशिका वाइल्डकार्डिंग?


14

एक लंबे समय के यूनिक्स / लिनक्स उपयोगकर्ता से एक और सवाल जो खुद को विंडोज दुनिया में पाता है। पहले मुझे समझाने की कोशिश करो कि मैं क्या करने की कोशिश कर रहा हूं। मैं Windows cmd.exe शेल का उपयोग कर रहा हूं, और मैं वर्तमान निर्देशिका के नीचे सभी निर्देशिकाओं को सूचीबद्ध करना चाहता हूं जिनमें एक बिन \ डीबग पदानुक्रम शामिल है, और निर्धारित करें कि क्या उनके पास कोई फ़ाइलें हैं (उदाहरण के लिए: यह जानने की कोशिश कर रहा हूं कि क्या मेरा NAnt स्वच्छ लक्ष्य है? ठीक से काम करना)। मेरी पदानुक्रम कुछ इस तरह दिख सकती है:

\Current
    \DirA
         \bin
             \Debug
                  (some files under debug)
             \Release
    \DirB
         \bin
             \Debug
    \DirC
         \bin
             \Release

यूनिक्स में, ls */bin/Debugबस मुझे सभी सामानों की एक सूची दी जाएगी DirA/bin/Debug, और मुझे वह तथ्य दिखाएगा जो DirB/bin/Debugखाली है। मैंने cmd शेल में विभिन्न कंट्रोवर्सीज़ की कोशिश की है, लेकिन जैसे सामान के साथ वाइंडिंग को बनाए रखें:

    > dir * \ bin \ Debug
    फ़ाइल नाम, निर्देशिका नाम या वॉल्यूम लेबल सिंटैक्स गलत है।

    > dir * \ * \ *
    फ़ाइल नाम, निर्देशिका नाम या वॉल्यूम लेबल सिंटैक्स गलत है।

वहाँ कुछ सूक्ष्म मैं dir आदेश के बारे में समझ में नहीं आता है, या यह सिर्फ इस तरह से सीमित है?

हां, मुझे एहसास है कि मैं सिर्फ एक्सप्लोरर, नेविगेट, राइट-क्लिक पर स्विच कर सकता हूं, और शायद अंततः एक खोज को तैयार करता हूं जो मुझे चाहिए, लेकिन मैं त्वरित-एन-गंदे कमांड-लाइन समाधान में अधिक रुचि रखता हूं।


हालांकि सभी यूनिक्स-जैसे टूल के बारे में जानकर अच्छा लगता है जिन्हें मैं विंडोज में जोड़ सकता हूं (और मुझे विश्वास है कि मैं घर पर साइगविन का उपयोग करता हूं!), मैं हमेशा उनके पास उपलब्ध नहीं होगा जहां भी मैं जाऊंगा (और वास्तव में व्यवस्थापक का अधिकार नहीं हो सकता है। मैं उन्हें हर पीसी पर स्थापित करता हूं)।
ओगरे Psalm33

जवाबों:


13

कुछ ऐसा करना चाहिए जो आपको चाहिए। परियोजना प्रकार की मूल निर्देशिका में:


c:\path\to\slndir>dir *.dll *.exe /s /b | findstr /i "bin\debug"

दलील तर्क: / s - पुनरावर्ती, / b - "नंगे", कोई अतिरिक्त जानकारी नहीं
मिलती तर्क वितर्क: / i - मामले को अनदेखा करें

सामान्य तौर पर, 'हेल्प कमांड ' शेल कमांड के लिए मदद दिखाएगा। अगर वह काम नहीं करता है, तो
' कमांड /?' आम तौर पर मदद दिखाएगा।


अति उत्कृष्ट! मुझे लगता है कि वहाँ कई उपकरण / उपकरणकिट्स हैं जो मुझे मेरी विंडोज को "लिनक्स" करने में मदद करने के लिए हैं, लेकिन मैं विंडोज तरीके की तलाश कर रहा था कि मैं क्या करने की कोशिश कर रहा हूं, और यह बिल्कुल यही है!
ओगरे Psalm33

7

लिनक्स जिस तरह से करता है विंडोज वाइल्डकार्ड नहीं करता है। केवल फ़ाइल नाम वाले भाग में वाइल्डकार्ड हो सकते हैं।

आप Windows पर चलने वाले ls का एक संस्करण डाउनलोड कर सकते हैं और उसका उपयोग कर सकते हैं। मैंने Cygwin का उपयोग किया है , लेकिन मुझे यकीन है कि अन्य लोग भी हैं।


इसके अलावा पॉवरशेल
जोएल कोएहॉर्न

3
एक और बात ध्यान में रखना: विंडोज वाइल्डकार्ड में शेल द्वारा नहीं, कमांड द्वारा विस्तारित किया जाता है।
लॉरेंस गोन्साल्व्स

2

unxutils में ls कमांड है। समस्या वास्तव में विंडोज़ शेल के साथ है। यूनिक्स पर आपका शेल */bin/Debugप्रासंगिक पथनामों में विस्तारित होगा और उन्हें अलग-अलग कमांड-लाइन तर्कों के रूप में एलएस कमांड को खिलाएगा।

साइगविन निश्चित रूप से आपके लिए चाल चलेगा, या आप एक यूनिक्स शेल के विंडो पोर्ट जैसे बैश की कोशिश कर सकते हैं । यदि आप स्क्रिप्टिंग मार्ग पर जाना चाहते हैं, तो आप बहुत आसानी से ग्लोब मॉड्यूल का उपयोग करके अजगर में कुछ कोड कर सकते हैं , और अधिकांश अन्य स्क्रिप्टिंग भाषाओं में एक समतुल्य है।


2

आप "dir / s * .obj * lib" जैसा कुछ कर सकते हैं। यह कितनी फ़ाइलों से मेल खाता है, इसके अंत में एक सारांश देंगे।


बंद करे। मैंने आपको प्रॉप्स दिए, लेकिन जेम्स का जवाब करीब है, क्योंकि यह मेरे लिए अंडर डिबग नहीं फाइलों को फिल्टर करता है।
ओगरे Psalm33

2
@for /D /r %P in (.) do @for %Q in ("%~fP\bin\Debug\*") do @echo %~ftzaQ

अच्छा नहीं है, लेकिन काम करना चाहिए। आप एक .cmd फ़ाइल में भी डाल सकते हैं (फिर हर एक% को% %% में बदल सकते हैं)। या डॉसकी का उपयोग करके मैक्रो को परिभाषित करें (हाँ, यह अभी भी मौजूद है)।

सुनिश्चित करें कि cmd एक्सटेंशन सक्षम हैं।

संपादित करें: यह कैसे काम करता है:

लूप के लिए पहला सभी उपनिर्देशिकाओं (/ डी और / आर स्विच) के माध्यम से पुनरावृत्त करता है। % ~ fP उस निर्देशिका के पूर्ण पथ पर फैलता है। फिर, यह उस रास्ते के लिए \ bin \ Debug * जोड़ता है। लूप के लिए दूसरा मेल खाने वाली सभी फाइलों को एन्यूमरेट करता है। % ~ ftzaQ को हर फ़ाइल मिलान तक विस्तारित किया जाता है और इको द्वारा स्क्रीन पर मुद्रित किया जाता है। अजीब% ~ ftzaQ यह एक dir आउटपुट की तरह प्रारूपित होता है। @ वर्ण यह बताता है कि आदेश स्क्रीन पर ही मुद्रित हैं।

अधिक के लिए, देखें


मैंने यह कोशिश की और वास्तव में यह काम करता है। लेकिन cmd शेल में कुछ अनुभवहीन होने के कारण, मुझे यह सब अभी तक समझ में नहीं आया है :-)।
ओगरे Psalm33

0

Windows दुनिया में cmd.exe वाइल्डकार्ड का विस्तार नहीं करता है - वे इसके कमांड लाइन या argv एरे में प्रोग्राम के रूप में पास हो जाते हैं। इसलिए प्रत्येक प्रोग्राम अलग-अलग तरीके से पार्स और फैलता है, और कुछ और अधिक उन्नत उपयोग (जैसे कि आप खोज रहे हैं) आमतौर पर समर्थित नहीं हैं।

साइगविन का उपयोग करने का टाइमगिलबर्ट का सुझाव एक अच्छा है, GNUWin32 पैकेज में कुछ ऐसा हो सकता है जो आपकी मदद करेगा।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.