मुझे NAME
निर्देशिका ट्री में नाम के साथ शुरू होने वाली सभी फ़ाइलों को खोजने और एक शेल कमांड का उपयोग करके इन सभी फ़ाइलों को निकालने की आवश्यकता है।
मुझे NAME
निर्देशिका ट्री में नाम के साथ शुरू होने वाली सभी फ़ाइलों को खोजने और एक शेल कमांड का उपयोग करके इन सभी फ़ाइलों को निकालने की आवश्यकता है।
जवाबों:
उन सभी फ़ाइलों को हटाने के लिए जिनका नाम है --- आप उपयोग कर सकते हैं
find -name . 'name*' -exec rm {} \;
grep
में एक -exec
स्विच है?
वर्तमान निर्देशिका और इसकी उप-निर्देशिकाओं में सभी फाइलें हटाएं जहां फ़ाइल का नाम "फू" से शुरू होता है:
$ find . -type f -name foo\* -exec rm {} \;
एनबी: सावधानी के साथ उपयोग करें - पहले बैक अप करें - पहले सूखा रन भी करें, जैसे
$ find . -type f -name foo\*
केवल आपको उन फ़ाइलों के नाम बताएगा जिन्हें हटा दिया जाएगा।
find . -type f -name foo\* -delete
किया चाल
मैं इस तरह से यह मेरे लिए काम कर रहा है की कोशिश की है नीचे आदेश की कोशिश करो।
rm -rf Example*
यहाँ "उदाहरण" पाठ है जो सभी फाइलों के लिए सामान्य है।
आप उपयोग कर सकते हैं find
:
find . -name "name*" -exec rm {} \;
साथ globstar
विकल्प (के साथ सक्षम shopt -s globstar
):
rm -f **/NAME*
**/
फैलता करने के लिए ./
, */
, */*/
, */*/*/
आदि यदि आप एक है, तो निर्देशिका के साथ शुरू नाम NAME
, आदेश में शिकायत करेंगे कि rm
निर्देशिका नहीं निकाल सकते, लेकिन इतना ही है।
ध्यान दें कि यह कमांड लाइन की लंबाई की सीमाओं में चल सकता है यदि ग्लोब कई फाइलों से मेल खाता है।
वैकल्पिक रूप से, rm
संभव के रूप में कुछ चालान के साथ, लेकिन किसी भी कमांड लाइन की लंबाई सीमाओं के अधीन नहीं:
find . -type f -name 'NAME*' -exec rm -f {} +
( कथन को बंद करने के +
बजाय नोटिस करें ।)\;
-exec
find . -name 'foo'* -type f -delete
सबसे सरल उत्तर की तरह लगता है।
आप इसे बिना -delete
झंडे के चला सकते हैं इससे पहले कि कौन सी फाइलें हटाई जाएंगी।