मैंने दौड़ने की कोशिश की
locate *.orig | xargs rm
लेकिन यह कहा No such file or directory
मैंने इसे करने के तरीके देखे हैं, find
लेकिन ऑब्जेक्ट को पूर्ण पथ देता है, इसलिए यह संभव होना चाहिए
मैंने दौड़ने की कोशिश की
locate *.orig | xargs rm
लेकिन यह कहा No such file or directory
मैंने इसे करने के तरीके देखे हैं, find
लेकिन ऑब्जेक्ट को पूर्ण पथ देता है, इसलिए यह संभव होना चाहिए
जवाबों:
यदि फ़ाइलनाम में रिक्त स्थान हैं, जिनका आपको उपयोग करना चाहिए
locate -0 $something | xargs -0 rm
से locate
आदमी पेज :
-0
,--null
अलग लाइन पर प्रत्येक प्रविष्टि लिखने के बजाय ASCII NUL वर्ण का उपयोग करके आउटपुट पर प्रविष्टियों को अलग करें। यह विकल्प GNU xargs (1) के --null विकल्प के साथ इंटरऑपरेबिलिटी के लिए डिज़ाइन किया गया है।
या
locate $something | while read f; do rm "$f"; done
इसके अलावा, आपको *.orig
शेल के विस्तार से बचने के लिए उद्धरणों से सुरक्षा करनी चाहिए , और अछूते का पता लगाने के लिए इसे पास करना चाहिए।
| while read
करता हूं क्योंकि मेरे घर की निर्देशिका रिक्त स्थान वाली फाइलों से भरी है।
*.orig
, तो शेल पैटर्न का विस्तार, कहने, करने के लिए करेगा file1.orig file2.orig ...
, ताकि locate
सटीक स्ट्रिंग नहीं दिखे *.orig
जैसा कि इसे चाहिए।
tr '\n' '\0'
।
यह xargs
नहीं हैxarg
आदेश locate *.orig | xargs rm
वास्तव में काम करता है, लेकिन जो हो रहा था वह कचरा कैन में फ़ाइलों locate
को ढूंढ रहा था *.orig
और कचरा rm
कैन No such file or directory
में फ़ाइलों को हटाने की कोशिश करते समय त्रुटि को बाहर निकालता है ।
पता लगाएँ कि ग्लोबिंग नहीं करता है, लेकिन शेल करता है। खोल * .orig का विस्तार करता है जो वर्तमान निर्देशिका में पाया जाता है जो * .orig से मेल खाता है।
महज प्रयोग करें
locate .orig
और यदि आपको वह मिल जाता है जिसकी आपको आवश्यकता है
locate .orig | xargs rm
या, जैसा कि एनजोतिब ने उल्लेख किया है
locate -0 .orig | xargs -0 rm
यदि आपके पास फ़ाइल नाम में व्हॉट्सएप है।
एक ट्रिक: tmp फाइल में सभी रास्तों को सेव करें। फिर, उस पर लूप करें:
#!/bin/bash
locate .orig /tmp/tmp.txt
while read line
do
pth=$line
rm "$pth"
done < /tmp/tmp.txt
rm -rf /tmp/tmp.txt