जवाबों:
इसके साथ किया जा सकता है find
:
find . -type f -size -1M -exec rm {} +
ध्यान दें कि यह पुनरावर्ती उपनिर्देशिका में उतरेगा, और बिना शर्त 1 मेगाबाइट से छोटी सभी फ़ाइलों को हटा देगा। सावधान रहे।
find
। :)
find
सिस्टम की सीमा में फिट होने के लिए बुलाए जाने वाले तर्कों की संख्या को सीमित करता है, इसके विपरीत rm *
, जो एकल प्रक्रिया मंगलाचरण है। यदि आवश्यक हो तो find
कई उदाहरणों को लागू करेगा rm
। और मुझे पूरा यकीन है कि विशेष पात्रों को सही ढंग से व्यवहार किया जाता है, जिसमें न्यूलाइन वर्ण भी शामिल हैं। मैं लचीलेपन के कारणों -exec rm
से अधिक पसंद करता हूं -delete
- उदाहरण के लिए, बाद वाला लिखने-संरक्षित फ़ाइलों को हटाने का कोई तरीका नहीं देता है।
-1M
वांछित से कम एक मेगाबाइट का मतलब है। आपका संस्करण आकार में बिल्कुल एक मेगाबाइट के साथ सभी फ़ाइलों को हटा देगा, जो कि कुछ हद तक बिना ऑपरेशन के लगता है।
find . -type f -size +1M -exec rm {} +
। -1M के बजाय + 1M पर ध्यान दें।
यह काम करना चाहिए:
$ find <directory> -type f -size -1M -delete
-
साइन एक माइनस साइन है जिसका अर्थ है "1M से कम"। यदि आप चलाते हैं find <directory> -type f -size +1M -delete
तो आप 1M से बड़ी सभी फ़ाइलों को हटा देंगे ।
बस विविधता के लिए और एक संभव (शायद मामूली) प्रदर्शन लाभ:
find <directory> -type f -size -1M -print0 | xargs -0 rm
xargs
प्रक्रिया शुरू करता है।
प्रयत्न
खोजो। -साइज़ -1M -exec rm {} \;
\;
इसके बजाय अंत में+
आप इस लिंक की जाँच कर सकते हैं http://ayaz.wordpress.com/2008/02/05/bash-quickly-de हटाना-empty-files-in-a-directory / , यह वही है जो आप चाहते हैं।
for file in *;
do
file_size=$(du $file | awk '{print $1}');
if [ $file_size == 0 ]; then
echo "Deleting empty file $file with file size $file_size!";
echo "rm -f $file";
fi;
done
आप लूप के लिए सभी फ़ाइलों के माध्यम से पुनरावृति कर सकते हैं और फिर उपर्युक्त उदाहरण में फाइल्स को खोजने के लिए डु और जाग का उपयोग कर सकते हैं।
1M
।