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