find
पूरे पेड़ पर चुनिंदा कार्य करने के लिए बहुत उपयोगी है।
find . -type f -name ".Apple*" -delete
यहां, -type f
यह सुनिश्चित करता है कि यह एक फ़ाइल है, निर्देशिका नहीं है, और यह बिल्कुल वैसा नहीं हो सकता है जैसा आप चाहते हैं, क्योंकि यह सिमिलिंक, सॉकेट और अन्य चीजों को भी छोड़ देगा। आप उपयोग कर सकते हैं ! -type d
, जिसका शाब्दिक अर्थ निर्देशिका नहीं है, लेकिन फिर आप वर्ण और ब्लॉक डिवाइस भी हटा सकते हैं। मेरा सुझाव है -type
कि मैन पेज के लिए विधेय को देखें find
।
वाइल्डकार्ड के साथ इसे कड़ाई से करने के लिए, आपको उन्नत शेल समर्थन की आवश्यकता है। बैश v4 के पास globstar
विकल्प है , जो आपको पुन: उपयोग करके उपनिर्देशिका से मिलान करने देता है **
। zsh
और ksh
इस पैटर्न का समर्थन भी करते हैं। इसका उपयोग करके, आप कर सकते हैं rm -rf **/.Apple*
। यह POSIX- मानक नहीं है, और बहुत पोर्टेबल नहीं है, इसलिए मैं इसे एक स्क्रिप्ट में उपयोग करने से बचूंगा, लेकिन एक बार की इंटरैक्टिव शेल कार्रवाई के लिए, यह ठीक है।
find . -type d -name .Apple*
काम मिल सकता है - यह सभी फ़ोल्डरों को सूचीबद्ध करता है। हालाँकि, यह तब विफल होता है जब मैं-delete
अंत में जोड़ता हूं । यह सिर्फ उपयोग सारांश के साथ वापस आता है। यह बिजीबॉक्स v1.1.1 पर चल रहा है। क्या इससे कुछ अन्तर पड़ता है?