आम तौर पर उनके फ़ाइलनाम में रिक्त स्थान वाली फ़ाइलों को निकालने के लिए आपको दौड़ना होगा:
$ 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बजाय उल्लेख है। उबंटू क्या उपयोग करता है? यहां स्वीकृत उत्तर का उपयोग करता है । क्या सही है? -dxargs-0
find -name "*\ *.txt" | xargs rmदो शब्द फ़ाइलों के लिए काम करता है ?