किसी निश्चित नाम के साथ एक खोजने के लिए मैं सभी उपनिर्देशिकाएँ कैसे खोजूँ?


13

मान लीजिए कि मेरे पास शीर्ष स्तर की निर्देशिका है /dirऔर कई उप निर्देशिकाएं हैं। मैं किसी /dirको खोजने के लिए उपनिर्देशिकाओं को कैसे खोजूं x/x/dir/x/x/x/target?

यह प्रश्न समान है, लेकिन ठीक वैसा नहीं जैसा मैं देख रहा हूं: कुछ उपनिर्देशिकाओं के लिए कमांड ढूंढें

मैं फ़ाइलों की तलाश नहीं कर रहा हूं, किसी विशेष नाम वाली सिर्फ निर्देशिका।

जवाबों:


18

कोशिश करो find /dir -type d -name "your_dir_name"

/dirअपने निर्देशिका नाम के साथ बदलें , और "your_dir_name"उस नाम से बदलें जिसे आप खोज रहे हैं।

-type dfindकेवल निर्देशिका के लिए खोज करना बताएगा ।


1

एक या एक से अधिक निर्देशिकाओं को खोजने और उन्हें खोजने के लिए और अधिक सामान्य समाधान के लिए जैसे git रिपॉजिटरी में पुराने ईमेल पते खोजने के लिए निम्नलिखित प्रारूप देखें:

find . -type d -name .git -print0|\
    xargs -0r -I {} find {} -type f -print0 |\
    xargs -0r grep -e 'my.old@email.address'

1
echo **/target

या प्रति पंक्ति एक मैच पाने के लिए:

printf %s\\n **/target

यह बॉक्स से बाहर zsh में काम करता है। बैश में, आपको shopt -s globstarपहले दौड़ने की जरूरत है , और सावधान रहें कि यह निर्देशिकाओं के प्रतीकात्मक लिंक का पता लगाता है। Ksh93 में, आपको set -o globstarपहले दौड़ने की आवश्यकता है ।

यदि आप निर्देशिकाओं के लिए केवल निर्देशिका या प्रतीकात्मक लिंक का मिलान करना चाहते हैं, तो एक अनुगामी /(यानी **/target/) जोड़ें । Zsh में, केवल निर्देशिकाओं से मेल खाने के लिए, लेकिन निर्देशिकाओं के प्रतीकात्मक लिंक से मेल नहीं खाते **/target(/)

किसी भी शेल में, आप findकमांड का उपयोग कर सकते हैं :

find . -name target

Linux और Cygwin पर, .वैकल्पिक है। यदि आप केवल निर्देशिकाओं का मिलान करना चाहते हैं, तो जोड़ें -type d

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