आम तौर पर उनके फ़ाइलनाम में रिक्त स्थान वाली फ़ाइलों को निकालने के लिए आपको दौड़ना होगा:
$ rm "file name"
लेकिन अगर मैं कई फाइलें निकालना चाहता हूं, जैसे:
$ find . -name "*.txt" | xargs rm
यह उन में रिक्त स्थान वाली फ़ाइलों को नहीं हटाएगा।
आम तौर पर उनके फ़ाइलनाम में रिक्त स्थान वाली फ़ाइलों को निकालने के लिए आपको दौड़ना होगा:
$ rm "file name"
लेकिन अगर मैं कई फाइलें निकालना चाहता हूं, जैसे:
$ find . -name "*.txt" | xargs rm
यह उन में रिक्त स्थान वाली फ़ाइलों को नहीं हटाएगा।
जवाबों:
आप बता सकते हैं find
और xargs
दोनों अशक्त टर्मिनेटर का उपयोग करते हैं
find . -name "*.txt" -print0 | xargs -0 rm
या (सरल) अंतर्निहित -delete
कार्रवाई का उपयोग करेंfind
find . -name "*.txt" -delete
या (धन्यवाद @kos)
find . -name "*.txt" -exec rm {} +
जिनमें से ARG_MAX
किसी को भी आवश्यकता के बिना सिस्टम की सीमा का सम्मान करना चाहिए xargs
।
ARG_MAX
मैं भी find . -name "*.txt" -exec rm {} \;
एक "सुरक्षित शॉट" का उल्लेख करूंगा
-print0
अंतिम विकल्प होना चाहिए (या कम से कम बाद में -name "*.txt"
) अन्यथा यह फाइलों तक सीमित नहीं रहेगा*.txt
...
संयोग से, यदि आपने ढूंढने के अलावा कुछ का उपयोग किया है, तो आप null बाइट्स के साथ newlines को बदलने के लिए tr का उपयोग कर सकते हैं।
उदाहरण के लिए। निम्नलिखित एक लाइनर एक निर्देशिका में 10 अंतिम संशोधित फ़ाइलों को हटाता है, भले ही उनके नाम में स्थान हो।
ls -tp | grep -v / | head -n 10 | tr "\n" "\0" | xargs -0 rm
Xargs कमांड डिफॉल्टर्स के रूप में टैब, स्पेस और नई लाइनों का उपयोग डिफ़ॉल्ट रूप से करता है। आप इसे केवल -d विकल्प के साथ newline वर्ण ('\ n') का उपयोग करने के लिए कह सकते हैं:
find . -name "*.txt" | xargs -d '\n' rm
-0
बजाय उल्लेख है। उबंटू क्या उपयोग करता है? यहां स्वीकृत उत्तर का उपयोग करता है । क्या सही है? -d
xargs
-0
find -name "*\ *.txt" | xargs rm
दो शब्द फ़ाइलों के लिए काम करता है ?