इनकोड संख्या का उपयोग करके लिनक्स पर एक फ़ाइल निकालें


15

यदि आप विशेष वर्णों के साथ UNIX / Linux पर एक फ़ाइल बनाते हैं, जैसे कि touch \"la*, आप इसे हटा नहीं सकते rm "la*। आपको इनोड संख्या का उपयोग करना होगा (यदि आप \नाम से पहले जोड़ सकते हैं , तो मुझे पता है, लेकिन आपको उपयोगकर्ता के रूप में अनुमान लगाना होगा कि इसका उपयोग फ़ाइल निर्माण में किया गया था)।

मैंने rm के लिए मैनपेज की जाँच की, लेकिन इनोड नंबर का कोई उल्लेख नहीं है। कर rm inodenumberया तो काम नहीं करता है।

इसके लिए क्या आज्ञा है?

जवाबों:


24

कुछ अन्य तरीकों में शामिल हैं:

विशेष वर्ण से बचना:

[~] $ rm \ "ला \ *

खोज आदेश का उपयोग करें और केवल वर्तमान निर्देशिका खोजें। खोज कमांड इनोड संख्याओं के लिए खोज कर सकती है, और एक आसान -deleteस्विच है:

[~] $ ls -i
7404301 "ला *

[~] $ मिल। -मैक्सडीप 1-टाइप f -inum 7404301
./"la*

[~] $ मिल। -मैक्सडेप 1-टाइप f -inum 7404301 -delete
[~] $ ls -i
[~] $

हेह, मेरे सुझाव की तुलना में निश्चित रूप से आसान होगा, मैंने कभी ध्यान नहीं दिया

बहुत सारे बेहतरीन स्विच खोजे गए हैं, यह मेरा ईमानदार सेना का चाकू उपकरण है जो काफी ईमानदार है :)
जॉन टी

t: ओह सच है।
अकीरा

Solaris में "-maxdepth" विकल्पों का "-delete" नहीं है।
guthrie

आपको -xdevविकल्प के साथ खोज को सीमित करना चाहिए क्योंकि अन्य आरोहित फाइल सिस्टम में समान कोड वाली असंबंधित फाइलें भी हो सकती हैं।
जोनास बर्लिन

5

शायद मुझे कुछ याद आ रहा है, लेकिन ...

rm '"la*'

वैसे भी, फ़ाइल नाम में इनोड नहीं है, फाइलें हैं। सभी फ़ाइलनामों को हटाने के बिना एक फ़ाइल को हटाने की कोशिश करना जो इसे इंगित करता है, आपके फाइल सिस्टम को नुकसान पहुंचाएगा।


ठीक है, यह केवल वर्तमान निर्देशिका के लिए काम करेगा, लेकिन यह वास्तव में चिंता का एक वैध कारण है। मूर्ख कि मैं चूक गया। हालांकि अभी भी फ़ाइल को नहीं हटाया गया है।
KdgDev

3
बिलकूल नही। फ़ाइल केवल तभी निकाल दी जाती है जब कोई और फ़ाइलनाम न हो और इसे खोलने वाली कोई प्रक्रिया न हो।
इग्नासियो वाज़केज़-अब्राम्स

5

यदि आप वास्तव में ऐसा करना चाहते हैं - और आपका उपयोग मामला वास्तव में वैसा नहीं दिखता जैसा आपको बिल्कुल चाहिए, तो आप फ़ाइल सिस्टम डीबगिंग टूल आज़मा सकते हैं। यदि आप सब कुछ खोने को तैयार हैं, तो यह है।

उदाहरण के लिए, ext2 / debugfs3/4 के लिए कमांड में एक "किल_फाइल" विकल्प होता है जो एक इनोड लेता प्रतीत होता है। जैसा कि अन्य प्रतिक्रियाओं में उल्लेख किया गया है, यह आपकी फ़ाइल प्रणाली को नुकसान पहुंचाएगा, क्योंकि निर्देशिका प्रविष्टियाँ गैर-मौजूद फ़ाइल की ओर इशारा करती हैं। fsckबाद में चल रहा है यह मरम्मत करने में सक्षम हो सकता है। यह संभावना नहीं है कि आप इसे माउंटेड फ़ाइल सिस्टम पर कर सकते हैं।

लेकिन मैं आपको केवल उचित भागने / उद्धृत करने और नियमित कमांड के साथ ऐसी फ़ाइलों को हटाने का उपयोग करने की दृढ़ता से सलाह दूंगा, rmजैसा कि पहले की प्रतिक्रिया में बताया गया है - और rm -iअतिरिक्त सुरक्षा के लिए उपयोग करें जब *


1

जब मैं दृढ़ता से "विशेष वर्णों से बचने" दृष्टिकोण की सिफारिश करता हूं, तो हमेशा clriकमांड होती है जब आप वास्तव में फिक्सेबल फाइल सिस्टम भ्रष्टाचार चाहते हैं।


2
यह ध्यान दिया जाना चाहिए कि clriआमतौर पर केवल Oracle सिस्टम (जैसे SunOS) पर मौजूद होता है।
कैन- ned_food


1

मेरे पास एक चुनौती थी जो एक फ़ाइल नाम को हटा रही थी जो डैश के साथ शुरू होती है - आरएम हमेशा इसे एक होस्टनाम के रूप में व्याख्या करना चाहता है। मैंने इसका उपयोग करके हल किया:

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