प्रश्न चिह्न के साथ शुरू होने वाली सभी फ़ाइलों को हटा दें


23

मेरे पास एक फ़ोल्डर है जिसमें मेरे पास लगभग 4k फाइलें हैं। इनमें से कुछ फाइलें आ ?या !चरित्र से शुरू होती हैं। मुझे उन्हें हटाने की आवश्यकता है लेकिन ऐसा अभिव्यक्ति नहीं मिल सकती जो ऐसा करे:

rm -f ./?*

बस सब कुछ हटा देता है। मैं संभवतः grepls पर उपयोग कर सकता हूं और इसे xargsकिसी अन्य फ़ोल्डर में फ़ाइलों को स्थानांतरित कर सकता हूं लेकिन मुझे उम्मीद है कि ऐसा करने का एक उचित तरीका था। दोनों ?और !फ़ाइलों पर मदद चाहिए ।

जवाबों:


26

किसी फैंसी सामान की जरूरत नहीं। बस ?इतना है कि यह ग्लोब का हिस्सा नहीं है से बच :

rm -f ./\?*

यह !भी काम करता है:

rm -f ./\!*

या एक में गिर गया:

rm -f ./{\?,\!}*

अद्यतन करें

बस ध्यान दिया कि आप grepके उत्पादन के लिए सुझाव दे रहे थे ls। मैं इस तथ्य पर आपका ध्यान दिलाना चाहता था कि आपको ls के आउटपुट को पार्स नहीं करना चाहिए


4
@recluze बेवकूफ नहीं; यदि आप वाइल्डकार्ड से बचने के बारे में नहीं जानते हैं तो यह स्पष्ट है कि इसे कैसे किया जाए।
बजे एक CVn

@recluze अभी भी अपने सवाल पर 5 वोट के बाद बेवकूफ लग रहा है? :) वैसे, अपडेटेड उत्तर देखें।
जोसेफ आर।

धन्यवाद और धन्यवाद :) ... ls आउटपुट में समस्याओं के बारे में पता था लेकिन मेरी फाइलों में एक विशेष पैटर्न था जिसे मैं गिन सकता था। फिर भी, पता करने के लिए अच्छा है :)
लिखना

13

मेरे मामले में, अक्षर वास्तव में प्रश्न चिह्न नहीं थे, लेकिन यूनिकोड वर्ण जो जाहिरा तौर पर मेरे कंसोल में प्रदर्शित नहीं हो सकते थे।

का उपयोग कर rm -i *मेरे लिए काम किया। यदि आप ऐसा नहीं करना चाहते हैं, तो आप http://www.odeberciti.biz/tips/delete-remove-files-with-inode-number.html पर बताए गए इनोड द्वारा भी हटा सकते हैं ।

इनकोड खोजने के लिए, उपयोग करें:

ls -il

फिर करो:

find . -inum [inode-number] -exec rm -i {} \;
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.