मेरे कंप्यूटर पर जब मैं उपयोग करता हूं:
find . \( -name dirname -type d \) -exec rm -r '{}' ';'
निर्देशिकाएं हटा दी जाती हैं, लेकिन मुझे त्रुटि मिलती है:
find: ‘./dirname’: No such file or directory
प्रत्येक निर्देशिका के लिए।
मेरी निर्देशिकाएँ खाली नहीं हैं, इसलिए -delete विकल्प मेरे लिए काम नहीं करेगा। मुझे इस व्यवहार का कारण यहाँ मिला :
- लगता है (जरूरी नहीं) में पहली प्रविष्टि ./ निर्देशिका है। यह होगा dir.1 /
- यह 'dir?' पैटर्न से इसकी तुलना करता है। क्या यह मेल खाता है? हाँ।
- "rm -r dir.1" निष्पादित करें।
- निर्देशिका में पैटर्न खोजने के लिए dir.1 / दर्ज करने का प्रयास करें। यह कमांड कमांड के बारे में कुछ भी नहीं जानता है।
- यह dir.1 / अब नहीं मिलता है। रिटर्न रिटर्न (स्ट्रेस आउटपुट को देखें)
मैंने इसके बजाय काम करने के लिए इसका इस्तेमाल किया:
rm -r `find . -name dirname -type d`
ध्यान रखें कि खोज अभी भी dirname नामक निर्देशिकाओं में पुनरावृत्ति करने का प्रयास करेगी, जो वास्तव में आवश्यक नहीं है और कुछ अतिरिक्त समय लगेगा। अपनी निर्देशिका संरचना के आधार पर, आप --depth
खोज विकल्प के साथ इसके आसपास काम करने में सक्षम हो सकते हैं। इसके अलावा, यदि आपके पास dirname / foo / dirname जैसी निर्देशिका संरचना है, तो आपको rm से "ऐसी कोई फ़ाइल या निर्देशिका" त्रुटियां नहीं मिलेंगी। त्रुटियों को दबाने के लिए आप stderr को / dev / null में या -f
rm के साथ (बल) ध्वज का उपयोग कर सकते हैं ।
-delete
विकल्प है।