कभी-कभी आपको आवश्यकता होती है एक निर्देशिका से लगभग सभी फ़ाइलें हटा दें, लेकिन आप उनमें से एक या कुछ को रखना चाहते हैं। जब इनकी संख्या बहुत अधिक हो तो एक-एक करके जाना कठिन कार्य होता है। यह सबसे अच्छा विकल्प नहीं है, लिनक्स में काम करना बहुत आसान बनाने के तरीके हैं और आप एक ही बार में अपनी सभी ज़रूरतों को हटा सकते हैं।
उदाहरण के लिए, हो सकता है कि आप केवल उन्हीं को हटाना चाहें जो किसी निश्चित नाम से शुरू होते हों, या किसी विशिष्ट एक्सटेंशन वाले आदि। वह सब संभव हैवास्तव में, अन्य अवसरों पर मैं पहले ही एलएक्सए में इसी तरह के ट्यूटोरियल दिखा चुका हूं। यहां आप चरण-दर-चरण ट्यूटोरियल का पालन करने में सक्षम होंगे और सरल तरीके से उन सभी फ़ाइलों को हटाने में सक्षम होंगे जो आप चाहते हैं, सिवाय इसके कि जिन्हें आप सहेजना चाहते हैं।
और सबसे अच्छी बात यह है आपको कोई प्रोग्राम इंस्टॉल करने की आवश्यकता नहीं होगी, इसे आरएम और फाइंड जैसे कमांड के साथ आसानी से किया जा सकता है। यानी, ऐसे प्रोग्राम जो किसी भी Linux डिस्ट्रो में पहले से इंस्टॉल होते हैं। और निश्चित रूप से, यह विधि पैटर्न ढूंढने और उन मिलानों का उपयोग करके केवल वही खत्म करने पर आधारित होगी जो आप चाहते हैं।
खैर, वहाँ को खत्म करने के लिए है कई विकल्प, क्या रहे हैं…
rm वाली निर्देशिका से फ़ाइलें निकालें
खैर, उपयोग करने के लिए rm कमांड आप जो चाहते हैं उसे खत्म करने के लिए, आपको सबसे पहले पैटर्न की पहचान करने के कुछ तरीके जानने होंगे:
- *(पैटर्न की सूची) - निर्दिष्ट पैटर्न की शून्य या अधिक घटनाओं से मेल खाता है
- ?(पैटर्न सूची) - निर्दिष्ट पैटर्न की शून्य या एक घटना से मेल खाता है
- +(पैटर्न की सूची) - निर्दिष्ट पैटर्न की एक या अधिक घटनाओं से मेल खाता है
- @(पैटर्न सूची) - निर्दिष्ट पैटर्न में से एक से मेल खाता है
- !(पैटर्न सूची) - दिए गए पैटर्न में से किसी एक को छोड़कर किसी भी चीज़ से मेल खाता है
पैरा extglob सक्षम करें उनका उपयोग करने के लिए, आपको पहले निम्नलिखित कमांड चलानी होगी:
<br data-mce-bogus="1"> shopt -s extglob<br data-mce-bogus="1">
अब आप जो चाहें उसे हटाने के लिए rm का उपयोग कर सकते हैं। उदाहरण के लिए, नाम से मेल खाने वाली फ़ाइलों को छोड़कर किसी निर्देशिका से सभी फ़ाइलें हटा दें «एलएक्सए»:
rm -v !("lxa")
आप भी निर्दिष्ट कर सकते हैं दो या दो से अधिक नाम जिन्हें आप हटाना नहीं चाहते. उदाहरण के लिए, "lxa" और "desdelinux" को हटाने से बचने के लिए:
rm -v !("lxa"|"desdelinux")
आप सभी फ़ाइलें हटा सकते हैं, विस्तार वाले को छोड़कर ।एमपी 3। उदाहरण के लिए:
rm -v !(*.mp3)
समाप्त होने पर, आप वापस जा सकते हैं एक्स्टग्लोब को अक्षम करें:
shopt -u extglob
खोज के साथ निर्देशिका से फ़ाइलें निकालें
आरएम का दूसरा विकल्प है आप जो चाहते हैं उसे हटाने के लिए ढूंढें का उपयोग करें. आप आरएम के साथ एक पाइप और xargs का उपयोग कर सकते हैं, या खोज के -डिलीट विकल्प का उपयोग कर सकते हैं। अर्थात्, सामान्य वाक्यविन्यास होगा:
find /directory/ -type f -not -name 'PATRÓN' -delete find /directory/ -type f -not -name 'PATRÓN' -print0 | xargs -0 -I {} rm [opciones] {}
उदाहरण के लिए, कल्पना करें कि आप क्या चाहते हैं एक्सटेंशन वाली फ़ाइलों को छोड़कर निर्देशिका की सभी फ़ाइलें हटा दें .jpg, आप इन दोनों कमांडों में से किसी एक का उपयोग कर सकते हैं, क्योंकि उन दोनों का परिणाम समान होता है:
find . -type f -not -name '*.jpg'-delete find . -type f -not -name '*.jpg' -print0 | xargs -0 -I {} rm -v {}
इसके बजाय, यदि आप चाहें कुछ अतिरिक्त पैटर्न जोड़ें, आप भी कर सकते हैं। उदाहरण के लिए, मान लें कि आप किसी निर्देशिका से .pdf या .odt को हटाना नहीं चाहते हैं:
find . -type f -not \(-name '*pdf' -or -name '*odt' \) -delete
बेशक, आप | के साथ भी ऐसा ही कर सकते हैं और xargs पिछले उदाहरण की तरह। वैसे तो हमने प्रयोग किया है -इनकार नहीं करना, लेकिन आप इसे सकारात्मक बनाने के लिए इसे हटा सकते हैं, यानी मिलान पैटर्न को हटा सकते हैं और उन्हें बाहर नहीं कर सकते।
GLOBIGNORE वेरिएबल का उपयोग करके निर्देशिका से फ़ाइलें निकालें
अंततः, वहाँ है एक और विकल्प खोजने और आरएम करने के लिए, और वह उन फ़ाइलों को इंगित करने के लिए एक पर्यावरण चर का उपयोग करना है जिन्हें आप हटाना या बाहर करना चाहते हैं। उदाहरण के लिए, कल्पना करें कि आप .pdf, .mp3 और .mp4 फ़ाइलों को सहेजते हुए डाउनलोड नामक निर्देशिका की सभी फ़ाइलों को हटाना चाहते हैं। उस स्थिति में, आप निम्नलिखित कार्य कर सकते हैं:
cd Descargas GLOBIGNORE=*.pdf:*.mp4:.*mp3 rm -v * unset GLOBIGNORE