जवाबों:
घटना में आप निर्देशिका को हटा नहीं सकते, आप हमेशा खोज का उपयोग कर सकते हैं।
find . -maxdepth 1 -type f -exec rm -f {} \;
वह वर्तमान निर्देशिका में सभी फ़ाइलें हटा देगा, और केवल वर्तमान निर्देशिका (उपनिर्देशिका नहीं)।
find dir/to/delete -delete
( rm
हटाने के लिए प्रति फ़ाइल एक प्रक्रिया नहीं करता है )।
find dir/to/delete -type f -delete
खोजो। -Maxdepth 1 -टाइप f -exec rm -f {} \;
यह बस बहुत लंबा (आरएम प्रति फ़ाइल का एक निष्पादन) लेता है।
यह बहुत अधिक कुशल है:
खोजो। -मैक्सडीप 1 -टाइप f -print0 | xargs -r0 rm -f
जितना संभव हो उतना rm फाइल करने में तर्क के रूप में rm जितना संभव है, तो rm फिल्म्स के अगले लोड के साथ चलाता है ... ऐसा हो सकता है कि rm को केवल 2 या 3 बार कहा जाता है।
ionice
पहले जोड़ना rm
एक अच्छा विचार है।
इन दोनों को समस्या का दौर मिलेगा। यहाँ पर प्रत्येक तकनीक के संबंधित प्रदर्शन का विश्लेषण है ।
find . -name WHATEVER -exec rm -rf {} \;
या
ls WHATEVER | xargs rm -rf
समस्या निर्देशिका में प्रत्येक आइटम के साथ "*" विस्तार से टकराती है। ये दोनों समाधान बदले में प्रत्येक फ़ाइल के माध्यम से काम करते हैं।
find . -print0 | xargs -0 rm
) की आवश्यकता होती है ।
ls *
" कर रहे हैं , और " *
" तर्क सूची में फैलता है कि आपका शेल बहुत लंबा होने के बारे में शिकायत करता है। ls .
इसके बजाय " " करें (या एक निर्देशिका स्तर ऊपर जाएं और " ls [dirname]
" करें)।
मैं एक स्तर का समर्थन करके ऐसा करने में सक्षम था:
cd ..
और चल रहा है:
rm directory name -rf
और फिर डायरेक्टरी बना रहे हैं।
इन सभी को लगता है कि इनवोकेशन बहुत अच्छा है, लेकिन मुझे शायद ही कभी याद हो कि नामकरण की जरूरत तब पड़ती है जब मैं जल्दी में होता हूं: इसके बजाय मैं एसएस का उपयोग करता हूं। जैसा कि कोई उल्लेख करता है, एल.एस. काम करेगा, लेकिन मैं ls -1 को पसंद करता हूं:
एलएस -1 | xargs -n 100 rm -rf
-N xxx आंकड़ा चारों ओर से खेलने के लिए बहुत ही सुरक्षित है क्योंकि अधिकतम या तो ऑटो-सही हो जाएगा (यदि आकार-अधिकतम पार हो गया है; देखें -s) या यदि किसी ऐप के लिए आर्ग-अधिकतम पार हो गया है तो यह आमतौर पर नहीं होगा स्पष्ट।
यह ध्यान दिया जाना चाहिए कि grep इस श्रृंखला के मध्य में सम्मिलित करना आसान है जब आप केवल एक बड़ी निर्देशिका में फ़ाइलों का एक सबसेट हटाना चाहते हैं, और जो भी कारण ढूंढना चाहते हैं उसका उपयोग न करें।
यह उत्तर मानता है कि आप अपने ls, xargs और आदि के लिए ग्नू कोर उपयोगिताओं का उपयोग कर रहे हैं।
सिस्टम को उत्तरदायी बनाए रखने के लिए बड़ी संख्या में फ़ाइलों को हटाने के लिए यहां एक संस्करण है।
यह छोटे बैचों में काम जारी करके (डिफ़ॉल्ट रूप से 100 फाइलें) और अन्य नौकरियों के खत्म होने तक थोड़ा इंतजार करता है।
Ext3 पर एकल निर्देशिका से आधा मिलियन से अधिक फ़ाइलों को हटाने के लिए शानदार ढंग से काम किया। यह एक छोटे से बोनस के रूप में किए गए प्रतिशत को प्रिंट करता है
noOfFiles=`ls -U | wc -l`
n=0
while (ls -U | tail -n 100 | xargs rm -f); do
n=$((n+100));
sync;
echo -en "$((n*100/noOfFiles))%, ($n of $noOfFiles)\r";
sleep 5;
done
"तर्क बहुत लंबा है" या "स्मृति आवंटित नहीं कर सकता" त्रुटियों को हल करता है
इसने सत्र फ़ोल्डर में 220,000+ फाइलों पर चाल चली ...।
फायदा: तुरंत फाइलें निकालना शुरू करता है
सीडी पथ / करने के लिए / फ़ोल्डर
ls -f | xargs rm -f -v
निकाले जा रहे फ़ाइलों के स्क्रीनशॉट के लिए क्लिक करें - (15min में सभी फाइलें हटा दी गईं)
-f (ls के बाद) प्रिस्क्रिप्शन से रहता है
-v (rm के बाद) प्रत्येक फ़ाइल को हटाए जाने के रूप में प्रदर्शित करता है
-f (rm के बाद) राइट-प्रोटेक्टेड फाइल्स पर बिना किसी प्रॉम्प्ट के फोर्स करता है
युक्ति: जब आप फ़ाइलों को हटाने का प्रयास कर रहे हों, तब अतिरिक्त ऑटोगेन्ज़र्ड फ़ाइलों को जोड़े रखने के लिए पहले फ़ोल्डर (सेशन_ सेशन से पूर्व) का नाम बदलें । यदि आप मेरे मामले में स्वचालित रूप से नहीं करते हैं तो आप मूल निर्देशिका को रीमेक कर सकते हैं