जवाबों:
बहुत ही अंतिम समाधान जब यह उन फ़ाइलों के लिए आता है जिन्हें सामान्य तरीकों से हटाया नहीं जा सकता है:
ls -il
पहला कॉलम फाइलों का इनकोड नंबर दिखाएगा।
find . -inum [inode-number] -exec rm -i {} \;
यह सत्यापन के बाद निर्दिष्ट इनोड-संख्या के साथ फ़ाइल को हटा देगा।
-deleteकरने के बजाय बदल दिया -exec, फिर महसूस किया कि आप उपयोग कर रहे हैं rm -iजो एक अच्छा विचार है इसलिए मैंने वापस रोल किया। माफ़ करना।
आपको उस फ़ाइल को ~/~(बिना उद्धरण के) के रूप में संदर्भित करने में सक्षम होना चाहिए, क्योंकि टिल्ड-एक्सपेंशन ~शब्द की शुरुआत में केवल टिल्ड ( ) पर लागू होता है ।
rm ./~, उसी कारण के लिए आपने कहा था
./~इसका शाब्दिक अर्थ है " ~वर्तमान निर्देशिका में नामित एक फ़ाइल या फ़ोल्डर " । भागने के वर्ण या इनोड संदर्भ जैसे कोई हैक नहीं हैं।
./~इसका उपयोग करना है। पाँच साल बाद, मेरी याददाश्त थोड़ी फीकी है, लेकिन मुझे लगता है कि यही कारण है कि मैंने ~/~अधिक सामान्य के बजाय सुझाव दिया ./~: प्रश्न विशेष रूप से " ~ओपी के होम डायरेक्टरी में नामित एक फ़ाइल" को संदर्भित करता है ; "वर्तमान निर्देशिका में नहीं"।
इसे बोली ( rm '~') या बच ( rm \~)।
यह हमेशा या तो उन लोगों के लिए होता है (उदाहरण के लिए भी $), या --फ़ाइल नाम को तर्क के रूप में व्याख्या करने से रोकने के लिए जोड़ें : rm -- -iनाम वाली फ़ाइल को हटा देता है -i; rm -- *जब आप वर्तमान निर्देशिका में सभी फ़ाइलों को हटाना चाहते हैं , तब भी उपयोगी : कोई आकस्मिक नहीं है rm -f *क्योंकि एक फ़ाइल को इस तरह नाम दिया गया है।
--केवल निम्नलिखित तर्कों को पैरामीटर के रूप में व्याख्यायित किया जाता है - यह शेल को अपने विस्तार (जैसे *) करने से नहीं रोकता है , जो कि यहां हो रहा है। (मुझे पता है कि आपने इसे अन्य स्थितियों के लिए एक विकल्प के रूप में सुझाया था, लेकिन एक चेतावनी अच्छी होगी।)