कुछ ऐसा जो मुझे लगता है कि मुझे निश्चित रूप से जानना चाहिए: अगर मैं ls <something>
, प्रदर्शित की गई rm <something>
फ़ाइलों को बिल्कुल हटा दूंगा ls
? क्या ऐसी कोई परिस्थितियां हैं rm
जो उन फ़ाइलों को हटा सकती हैं जो ls
नहीं दिखाती थीं? (यह 18.04 बैश में है)
संपादित करें: जवाब देने वाले सभी को धन्यवाद। मुझे लगता है कि पूर्ण उत्तर सभी उत्तरों का एक संयोजन है, इसलिए मैंने "उत्तर" के रूप में सबसे अधिक मतदान वाले उत्तर को स्वीकार किया है।
अप्रत्याशित चीजें जो मैंने रास्ते में सीखी हैं:
ls
उतना सीधा नहीं है जितना कि आप इसके तर्कों से निपटने में सोच सकते हैं- उबंटू, .bashrc उपनामों की स्थापना के साथ एक सरल संयुक्त राष्ट्र में
ls
- अपनी फ़ाइलों का नाम डैश के साथ शुरू न करें क्योंकि वे कमांड तर्क की तरह दिख सकते हैं, और एक -r का नामकरण इसके लिए पूछ रहे हैं!
find -delete
तुलना में बेहतर क्यों होगा rm
? आप कहते हैं "यही कारण है" , लेकिन यह मेरे लिए पूरी तरह से अस्पष्ट है कि इसका क्या मतलब है। यह भी ध्यान दें कि आपका find
आह्वान वर्तमान निर्देशिका में सभी फ़ाइलों को पुन:rm
हटा देगा , जहां बस तत्काल निर्देशिका में फ़ाइलों को हटा दिया जाएगा। साथ -name *
ही नो-ऑप भी है। सब सब में, मैं आपकी सलाह से काफी हैरान हूँ ...
find
है क्योंकि आप इसे चला सकते हैं, सभी फाइलें देख सकते हैं, और फिर उसी कमांड को चला सकते हैं -delete
। चूँकि आप पहले से ही परिणाम देख चुके हैं find
, इस बात को लेकर कोई अस्पष्टता नहीं होनी चाहिए कि क्या हटाया जाएगा (मैं वास्तव में इस बारे में अधिक विवरण एक उत्तर के रूप में सुनना चाहूंगा)
-delete
" - लेकिन यह चलाने से बेहतर कैसे है ls <filespec>
, इसके बाद rm <filespec>
(ओपी पहले से ही जानता है कि कैसे करना है)?
find ... -print
पहले यह पुष्टि करने के लिए दौड़ते हैं कि कौन सी फाइलें हटाई जाएंगी, और फिर find ... -delete
, आप अभी भी दो कमांड के बीच बनाई गई फाइलों को हटा देंगे। यदि आप दोनों का उपयोग करते हैं -print
और -delete
, आपको पुष्टि नहीं मिलती है, तो जो कुछ भी हटा दिया गया है उसकी एक-के-बाद की रिपोर्ट (और आप उपयोग भी कर सकते हैं rm -v
)।
rm
नहीं है--dry-run
...