कैसे एक अजीब नाम के साथ एक फ़ाइल को हटाने के लिए?


33

मैंने एक प्रोग्राम लिखा है जो POSIX मेमोरी-मैपिंग फ़ंक्शन ( mmap) का उपयोग करता है

कार्यक्रम एक फ़ाइल ( a.dat) और मेमोरी-मैप्स को पढ़ने / लिखने के लिए लेता है ।

कार्यक्रम में त्रुटियों के कारण, हर बार जब मैं कार्यक्रम चलाता हूं तो कुछ अजीब नामों (जैसे, ?d?P?^z??d?P?^z?) के साथ एक फ़ाइल बनाई जाती है। त्रुटि हल हो गई है, लेकिन मैं फ़ाइलों को हटाने में सक्षम नहीं हूं।

मैं इसे या तो कमांड लाइन का उपयोग करके या विंडो मैनेजर से चयन / हटाने के लिए हटाने में सक्षम नहीं हूं।

तो मैं इसे कैसे हटाऊं? मैं Ubuntu 11.04 का उपयोग कर रहा हूं।


1
यहां तक ​​कि अगर आप आसानी से फ़ाइल नाम नहीं लिख सकते हैं, तो इसे ग्राफिकल फ़ाइल प्रबंधक से हटाकर ठीक काम करना चाहिए। आप क्या त्रुटि प्राप्त कर रहे हैं?
थॉमस

2
@ आदित्य, मुझे सिंगल कोट्स ( rm '?d?P?^z??d?P?^z?') के साथ अपने नाम से भागने पर कमांड लाइन से ऐसी फ़ाइलों को हटाने में कोई समस्या नहीं है । क्या आपने कोशिश की?
फ्रैडरिक हमीदी

चित्रमय विंडो प्रबंधक से हटाना केवल यह कहता है कि फ़ाइल 'फ़ाइलनाम' को नहीं हटाया जा सकता है। @ Frédéric Hamidi मुझे एक फ़ाइल हटाने में मदद करने के लिए धन्यवाद। लेकिन नाम के साथ एक अन्य '? एम? पी ???)? एम? पी ???)' नहीं हटाया जा रहा है ... त्रुटि संदेश कहते हैं "rm: 'नहीं हटा सकते हैं? एम? पी ???)? एम? ? पी ???) ': ऐसी कोई फ़ाइल या निर्देशिका नहीं है "
AK

1
@ आदित्य, उस फ़ाइल के नाम में गैर-मुद्रण योग्य वर्ण होने चाहिए। निम्न चरणों का प्रयास करें: 1 / सभी मान्य फ़ाइलों को उस फ़ोल्डर से बाहर ले जाएँ, 2 / rm *फ़ोल्डर के अंदर समस्या ।
फ्रैडरिक हमीदी

1
जब फ़ाइल नाम टाइप करना उद्धरण के साथ शुरू करने का प्रयास करते हैं, तो जैसे ही यह काम करता है (एक या दो वर्णों के बाद) ऑटो समापन का उपयोग करें। शेल पूरा करने के लिए ऑटो समापन [टैब] कुंजी को पूरा करेगा। इस तरह आप नामों को सही ढंग से भागने में अधिक सफल हो सकते हैं।

जवाबों:


45

rm -i -- *आपको प्रत्येक फ़ाइल को हटाने के लिए संकेत देगा। यदि आप बहुत सारी फाइलें हैं, तो आप '*' को एक संकीर्ण मैच में बदल सकते हैं। --प्रसंस्करण विकल्प बंद हो जाता है, इसलिए नाम की एक फ़ाइल -dसे निकाल दिया जाएगा rmसफलतापूर्वक।

मैंने अतीत में इसका उपयोग किया है और यह तब तक काम करता है जब तक आप एक विशेष चरित्र या 2 को हिट नहीं करते हैं जो इसे पसंद नहीं करता है।


1
यह उदाहरण के लिए -d नामक फ़ाइल के लिए काम नहीं करता है।
एससीओ

2
@SCO यदि यह आप के लिए नहीं काम करता है और के अपने संस्करण के आधार पर rm, आप कर सकते हैं rm के कुछ संस्करणों बताता है वहाँ कोई और अधिक कमांड लाइन पंक्ति के बाद स्विच कर रहे हैं और फ़ाइल नाम के रूप में आगे आर्ग के इलाज के लिए। rm -i -- *----
जिमर

1
मुझे लगता है कि इस उत्तर में @JimR द्वारा सुझाई गई टिप्पणी शामिल होनी चाहिए: कमांड --में प्रयोग करना rm
फेलिप अल्वारेज

16

आप उपयोग कर सकते हैं ls -li सभी फ़ाइलों को उनके इनकोड द्वारा दिखाने के लिए । फिर फ़ाइल को निकालने के लिए इस कमांड को चलाएँ:

find . -inum ${INODE_NUM} -delete

मैंने -maxdepth 1अपनी खोज में सिर्फ सुरक्षित रहने के लिए जोड़ा :

find . -maxdepth 1 -inum ${INODE_NUM} -delete

1
सख्ती से बोलना, ls -iकाफी अच्छा है।
स्कॉट

lsफ़ाइलों को हटा नहीं है। ओपी यही चाहता है।
फेलिप अल्वारेज

4
आपके उत्तर की पहली पंक्ति कहती है, "आप ls -liसभी फ़ाइलों को उनके इनकोड द्वारा दिखाने के लिए उपयोग कर सकते हैं ।" मैं इंगित कर रहा हूं कि ls -iफ़ाइल नाम और उनकी संबंधित इनोड संख्या की सूची प्राप्त करना काफी अच्छा है। (लेकिन निश्चित रूप से आपको ls -iaडॉट-फाइल्स को शामिल करना है।)
स्कॉट

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