आरएम में पता लगाने के पाइप परिणाम


11

मैंने दौड़ने की कोशिश की

locate *.orig | xargs rm

लेकिन यह कहा No such file or directory

मैंने इसे करने के तरीके देखे हैं, findलेकिन ऑब्जेक्ट को पूर्ण पथ देता है, इसलिए यह संभव होना चाहिए

जवाबों:


20

यदि फ़ाइलनाम में रिक्त स्थान हैं, जिनका आपको उपयोग करना चाहिए

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शेल के विस्तार से बचने के लिए उद्धरणों से सुरक्षा करनी चाहिए , और अछूते का पता लगाने के लिए इसे पास करना चाहिए।


"शेल विस्तार" से आपका क्या तात्पर्य है?
सैनिक sold०

अपने दूसरे उदाहरण के लिए +1। मैं हमेशा उपयोग | while readकरता हूं क्योंकि मेरे घर की निर्देशिका रिक्त स्थान वाली फाइलों से भरी है।
मटका

@ Sold.m.moth: यदि वर्तमान फ़ोल्डर में पैटर्न के अनुरूप फाइलें हैं *.orig, तो शेल पैटर्न का विस्तार, कहने, करने के लिए करेगा file1.orig file2.orig ..., ताकि locateसटीक स्ट्रिंग नहीं दिखे *.origजैसा कि इसे चाहिए।
enzotib

इसके अलावा आप फिर से उत्पादन का पता लगाने के लिए grep कर सकते हैं tr '\n' '\0'
पाब्लो बिआंची

2

यह xargsनहीं हैxarg


हालांकि मेरा मतलब था कि मैमोरी थैंक्स से सवाल टाइप करना था, हालांकि।
सिपाही.मोठ

ओह ठीक। ऐसा लग रहा था कि त्रुटि के बाद आप एक गलत कमांड डालेंगे |
मैको

0

आदेश locate *.orig | xargs rmवास्तव में काम करता है, लेकिन जो हो रहा था वह कचरा कैन में फ़ाइलों locateको ढूंढ रहा था *.origऔर कचरा rmकैन No such file or directoryमें फ़ाइलों को हटाने की कोशिश करते समय त्रुटि को बाहर निकालता है ।


आपको मूल उत्तर के लिए "टिप्पणी" के रूप में जानकारी जोड़ना चाहिए, या आप मूल उत्तर को संपादित कर सकते हैं। यह आपके अपने प्रश्न का उत्तर नहीं है।
enzotib

यह मेरे सवाल का एक कारण है कि मुझे जो त्रुटि मिल रही थी, उसका कारण था क्योंकि पता लगाना * था। कूड़ेदानों और आरएम में मौजूद फाइलें उन्हें हटा नहीं सकती थीं। मैंने आपके उत्तर को स्वीकार कर लिया और दोनों अन्य उत्तरों को वोट दिया क्योंकि वे अच्छी तरह से लिखे गए थे और बाद में आने वाले किसी व्यक्ति की मदद कर सकते हैं।
सैनिक।

0

पता लगाएँ कि ग्लोबिंग नहीं करता है, लेकिन शेल करता है। खोल * .orig का विस्तार करता है जो वर्तमान निर्देशिका में पाया जाता है जो * .orig से मेल खाता है।

महज प्रयोग करें

locate .orig

और यदि आपको वह मिल जाता है जिसकी आपको आवश्यकता है

locate .orig | xargs rm

या, जैसा कि एनजोतिब ने उल्लेख किया है

locate -0 .orig | xargs -0 rm

यदि आपके पास फ़ाइल नाम में व्हॉट्सएप है।


0

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