सभी फ़ाइलों को निकालें, लेकिन एक आरएम के साथ


10

वहाँ एक निर्देशिका में सभी फ़ाइलों को हटाने के लिए एक निश्चित फ़ाइल नाम के साथ छोड़कर कोई रास्ता नहीं है ? उदाहरण के लिए, अगर मैं फ़ाइलों वाला कोई निर्देशिका था file1, file2है, और dontdelete। क्या जल्दी से हटाने का कोई तरीका होगा file1, file2और नहीं dontdelete? मुझे पता है कि मैं बस कर सकता था, rm file1 file2लेकिन वह फाइलों के एक समूह के लिए काम नहीं करेगा। इसके अलावा, अगर मैं मैक ओएस एक्स पर हूं तो इससे फर्क पड़ता है।


सरल वाइल्डकार्डिंग आपका समाधान हो सकता है: आरएम फ़ाइल * फ़ाइल 1 और फ़ाइल 2 को हटा देगा लेकिन डोनटेटेट नहीं। यदि आपकी आवश्यकताएं अधिक जटिल हैं, तो शेल स्क्रिप्टिंग भाषा के आधार पर, आप उन फ़ाइलों की एक सूची तैयार कर सकते हैं जिन्हें आप एक नियमित अभिव्यक्ति का उपयोग करके हटाना चाहते हैं और इसे rm कमांड पर पाइप करते हैं।
थेरोबोकेन

@ रोब: हाँ, मेरी स्थिति इससे अधिक जटिल है। और इग्नासियो के जवाब ने काम किया। हालांकि धन्यवाद!
वफ़र्स 4

जवाबों:


16

बैश में:

shopt -s extglob
rm !(dontdelete)

1
+1 वाह बहुत रसीला समाधान। जरूरत पड़ने पर उसे सहन करूंगा।
थेरोबोक्नो

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