मैं सभी उपनिर्देशिकाओं में दिए गए नाम के साथ सभी फ़ाइलों को कैसे हटाऊं?


25

मैं अपने होम डायरेक्टरी की सभी उपनिर्देशिकाओं में दिए गए नाम के साथ सभी फाइलों को हटाना चाहता हूं।

मैंने कोशिश की:

rm -r file

मेरे होम डाइरेक्टरी में, लेकिन यह काम नहीं किया क्योंकि उस डायरेक्टरी में वह फाइल मौजूद नहीं है।

जवाबों:



12

@ tante के उत्तर पर विस्तार के रूप में, आप उन फ़ाइलों को हटाने से पहले यह सुनिश्चित करना चाहेंगे कि जिस फ़ाइल की सूची का उपयोग किया गया है वह सही है:

find <source_dir> -name <filename> -print

यदि निरीक्षण वैध सूची दिखाता है

find <source_dir> -name <filename> -delete

एक और विकल्प यदि एक अस्थायी होल्डिंग डायरेक्टरी का उपयोग करते हुए कई निर्देशिकाओं में यह चाहते हैं:

mkdir <dest_dir>
for i in <list_of_directories>
do
  find "$i" -name <filename> -exec /bin/mv {} <dest_dir>
done

# check dest_dir
ls dest_dir
rm -rf <dest_dir>

हमेशा की तरह, कृपया निष्पादन से पहले किसी भी स्क्रिप्ट की सटीकता सुनिश्चित करें और हमेशा एक बैकअप तैयार होने की स्थिति में कुछ गलत हो जाता है।


3
हमेशा चर प्रतिस्थापन के आसपास दोहरे उद्धरण चिह्नों को रखें, या आपकी कमांड कुछ विशेष वर्णों (व्हॉट्सएप, वाइल्डकार्ड और बैकस्लैश) वाले फ़ाइल नामों के साथ काम नहीं करेगी।
गिल्स एसओ- बुराई को रोकना '

@ गिल्स - हां, इस उत्तर को अपडेट करने और सुनिश्चित करने के लिए धन्यवाद सही था।
वेन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.