कैसे पता लगाकर लौटाए गए सभी फ़ाइलों को हटाने के लिए


13

फिलहाल मैं क्या कर रहा हूँ:

चरण 1:

locate fooBar
/home/abc/fooBar
/home/abc/Music/fooBar

चरण 2:

प्रत्येक पंक्ति को कॉपी-पेस्ट करके, मैन्युअल रूप से हटाने का प्रदर्शन करें।

rm /home/abc/fooBar
rm /home/abc/Music/fooBar

मैं इसे एक चरण में कैसे करूं? कुछ इस तरह

fooBar> rm का पता लगाएं

धन्यवाद।


क्या आप यह चाहते हैं? rm -i FooBar``
LFC_fan

मुझे यकीन नहीं है कि ऊपर क्या करता है। मैं केवल उन सभी फाइलों को हटाना चाहता हूं, जब मैं एक खोज कमांड चलाता हूं, जो रास्ते से वापस आती हैं।
TheTuxRacer 6

जवाबों:


13

जैसा कि अन्य अध्यायों ने पहले ही उल्लेख किया है, xargs आपका मित्र है। यह वास्तव में एक शक्तिशाली उपकरण है और मैं इसे समझाने और एक आम गेटा के लिए एक समाधान प्रदान करने का प्रयास करूँगा।

क्या xargs इनपुट से एक लाइन लेता है, और इसे दूसरे कमांड में जोड़ता है, इनपुट में हर लाइन के लिए अन्य कमांड निष्पादित करता है। इसलिए टाइप करके locate foobar | xargs rm -f, कमांड के आउटपुट को कमांड के अंत में पैच किया जाएगा rm -f, और द्वारा उत्पादित प्रत्येक लाइन के लिए निष्पादित किया जाएगा locate foobar

गोत्र:

लेकिन क्या होगा अगर आपकी लाइन में रिक्त स्थान हैं जो पता लगाकर लौटे हैं? यह rm -fकमांड को तोड़ देगा क्योंकि rm को दिए गए तर्कों को फाइल होने की आवश्यकता है (जब तक कि आप -r स्विच का उपयोग नहीं करते हैं), और फ़ाइल-पाथ को रिक्त स्थान से बचने या उद्धृत करने की आवश्यकता है।

xargs -i स्विच प्रदान करता है, इनपुट को कमांड में प्रतिस्थापित करने के लिए जो इसे जोड़ने के बजाय इसका अनुसरण करता है। इसलिए मैं सुझाव को बदलूंगा

locate foobar | xargs -ixxx rm -f 'xxx'

अगर अब फ़ाइलनाम निहित एपोस्ट्रोफिस द्वारा लौटाया जाता है तो केवल टूट जाएगा।

मुझे क्यूबी के साथ सहमत होना है, कि आपको rm -f का उपयोग करने में सावधानी बरतनी चाहिए ! -P फ्लैग का उपयोग xargs के लिए करें, या बस xbgs को फीड करने से पहले फाइवर को स्वयं चलाएं, या rm से -f ड्रॉप करें।

locate foobar | xargs -p -ixxx rm -f 'xxx'

9
अपने नाम में विदेशी पात्रों (newlines, quotes, apostrophes, आदि) के साथ फ़ाइलों के खिलाफ मजबूत होने के लिए, आप -0(और --null) विकल्प का पता लगाने और xargs का उपयोग कर सकते हैं । यह अलग फ़ाइलनामों के लिए सुरक्षित ASCII NUL चरित्र का उपयोग करता है:locate -0 foobar | xargs -0 rm
Jukka Matilainen

1
उत्तर के लिए +1, और
गेटा

मैंने इसकी कोशिश की, लेकिन यह काम नहीं किया।
Pronoy999

आंशिक रूप से काम किया
स्टीव

7

शायद आपको उपयोग के लिए कुछ और विकल्पों की आवश्यकता हो xargs। इसके साथ पहले परीक्षण करें xargs -p। यदि यह ठीक है, तो -pविकल्प निकालें :

locate foobar | xargs rm

6

पता लगाकर लौटी सभी फ़ाइलों को हटाने के लिए, अपने टर्मिनल में निम्न आदेश जारी करें

locate foobar | xargs rm -f

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.