2010-09-01 22 views
5

क्या कोई मुझे एक बैश स्क्रिप्ट या एक लाइन कमांड दे सकता है जिसे मैं वर्तमान फ़ोल्डर से प्रत्येक फ़ोल्डर के माध्यम से लिनक्स पर चला सकता हूं और '._ से शुरू होने वाली सभी फ़ाइलों या निर्देशिकाओं को हटा सकता हूं। '?बैश स्क्रिप्ट फ़ोल्डरों के माध्यम से पुनरावर्ती कदम उठाने और फ़ाइलों को हटाने के लिए

+1

बस FYI: '._' फ़ाइलों को AppleDouble फ़ाइलों कहा जाता है। मैक सिस्टम पर, फाइलों में एक डेटा कांटा और संसाधन कांटा होता है। संसाधन कांटा आम तौर पर आइकन, फ़ाइल में फ़ाइल की स्थानिक स्थिति (खोजक में), और अन्य मेटाडेटा जैसी जानकारी रखती है। डेटा कांटा (वास्तविक फ़ाइल) में वास्तविक महत्वपूर्ण डेटा होता है, इसलिए AppleDouble फ़ाइल को छोड़ना समस्याग्रस्त नहीं होना चाहिए। – dreamlax

उत्तर

14

रूट निर्देशिका आप चाहते करने के लिए निर्देशिका (या निर्देशिका . बदल) और निष्पादित बदलें:

find . -name "._*" -print0 | xargs -0 rm -rf 

xargs आप एक ही आदेश के कई मापदंडों पारित करने के लिए अनुमति देता है, तो यह तेजी से हो जाएगा find -exec वाक्यविन्यास का उपयोग करने से। साथ ही, आप इसे हटाए जाने वाली फ़ाइलों को देखने के लिए | के बिना इसे एक बार चला सकते हैं, सुनिश्चित करें कि यह सुरक्षित है।

+2

यह रिक्त स्थान के साथ फ़ाइल नामों से भ्रमित हो जाएगा, जो कि यदि आप मैक पर्यावरण से फ़ाइलों से निपट रहे हैं तो आम हैं। इस समस्या से बचने के लिए 'ढूंढें' और 'xargs' ('find। -name" ._ * "-print0 | xargs -0 rm -rf') के लिए नल-डिलीमीटर विकल्प का उपयोग करें। –

+0

हाँ ... निष्पादन प्रारूप अधिक सुरक्षित और आसान है। –

+0

@ गॉर्डन, धन्यवाद, मैंने अपना समाधान अपडेट किया। –

2
find . -name '._*' -exec rm -Rf {} \; 
+0

शायद '/' – dreamlax

+0

के बजाय '। /' का उपयोग करना चाहते हैं लेखक ने "रूट फ़ोल्डर से प्रत्येक फ़ोल्डर को जाने" के लिए कहा। –

+0

* * रूट फ़ोल्डर और * ए * रूट फ़ोल्डर के बीच एक सूक्ष्म अंतर है। – dreamlax

0

मुझे थोड़ी देर पहले एक ही समस्या आई थी (मुझे लगता है कि आप एक मैक से जुड़े एक ड्राइव को साफ करने की कोशिश कर रहे हैं जो इन फ़ाइलों में से कई को बचाता है), इसलिए मैंने एक साधारण पायथन लिपि लिखी जो इन्हें हटा देता है और अन्य बेकार फाइलें; शायद यह आपके लिए उपयोगी हो जाएगा:

http://github.com/houbysoft/short/blob/master/tidy

+0

हाँ, आपने सही ढंग से ग्रहण किया है। माना जाता है कि मैक को 'नेटवर्क अनुकूल' बनाने के लिए कुछ ऐसा सेब ठीक करने की तलाश में है। – link664

-3

find . -name '.*' -delete

थोड़ा छोटा और अत्यंत फ़ाइलों की लंबी सूची के मामले में बेहतर प्रदर्शन करते हैं।

+1

Noooooooo! '। *' आपकी सभी डॉट फाइलों को हटा देगा, और आपको उनकी आवश्यकता होगी !!! इन लोगों को मत करो। यह एक बुरा विचार है। – daviewales

0

AppleDouble फ़ाइलों को हटाने के बजाय, आप उन्हें संबंधित फ़ाइलों के साथ विलय कर सकते हैं। आप dot_clean का उपयोग कर सकते हैं।

dot_clean - विलय ._ * संबंधित मूल फ़ाइलों वाली फ़ाइलों को मर्ज करें।

प्रत्येक डीआईआर के लिए, dot_clean पुनरावर्ती रूप से दिए गए तर्कों के साथ निर्दिष्ट नियमों के अनुसार सभी संबंधित फाइलों के साथ ._ * फ़ाइलों को विलय करता है। डिफ़ॉल्ट रूप से, यदि मूल फ़ाइल पर कोई विशेषता है जो ._ फ़ाइल में मौजूद है, तो सबसे हालिया विशेषता का उपयोग किया जाएगा।

यदि कोई ऑपरेंड नहीं दिया जाता है, तो उपयोग संदेश आउटपुट होता है। यदि एक से अधिक निर्देशिका दी जाती है, तो निर्देशिकाओं को क्रम में विलय कर दिया जाता है जिसमें वे निर्दिष्ट होते हैं।

क्योंकि dot_clean डिफ़ॉल्ट, उपयोग के द्वारा रिकर्सिवली काम करता है:

dot_clean <directory> 

आप बंद करना रिकर्सिवली विलय, फ्लैट मर्ज के लिए -f का उपयोग करें।

dot_clean -f <directory> 
संबंधित मुद्दे