क्या आप जानते हैं कि Linux की नई इंस्टॉलेशन में कितनी फ़ाइलें होती हैं? यदि आप PopOS! Linux डिस्ट्रीब्यूशन को उदाहरण के रूप में उपयोग करते हैं, तो 31,000 से अधिक फ़ाइलें हैं। यह आपके कोई डॉक्यूमेंट बनाने, संगीत संग्रहीत करने, PDF डाउनलोड करने, या तस्वीरें व्यवस्थित करने से पहले की बात है।
इस वजह से, जब आपको Linux में सही फ़ाइल या फ़ोल्डर ढूंढने की आवश्यकता होती है, तो यह एक चुनौती बन जाता है। इस लेख में, आप सीखेंगे कि Linux FIND कमांड का उपयोग कैसे करें, और हम आपको यथासंभव सभी उदाहरण देंगे।
Linux FIND कमांड सिंटैक्स
सिंटैक्स से तात्पर्य है कि शब्दों, या कमांड को कैसे एक साथ रखा जाता है। जिस तरह एक सामान्य वाक्य शब्दों को फेरबदल करके बकवास बन सकता है, कमांड विफल हो सकते हैं यदि उनका उचित सिंटैक्स में उपयोग नहीं किया जाता।
find [path] [conditions] [actions]
इसका अर्थ यह है:
find – Linux में Find उपयोगिता शुरू करता है
path – कहां देखना है
conditions – खोज पर लागू करने के लिए तर्क
actions – परिणामों के साथ क्या करना है
सभी तीन का उपयोग करने वाला एक सरल उदाहरण:
find . -name file-sample.rtf -print
जैसा कि आपने अनुमान लगाया, यह फ़ाइल नाम file-sample.rtf ढूंढेगा।
पीरियड (.) पथ find को वर्तमान निर्देशिका और उसके अंदर की किसी भी निर्देशिका में देखने के लिए कहता है।
-name शर्त find को उस विशिष्ट नाम वाली फ़ाइल प्राप्त करने के लिए कहती है।
-print क्रिया FIND को परिणामों को स्क्रीन पर दिखाने के लिए कहती है।
पीरियड और -print find कमांड के लिए डिफ़ॉल्ट हैं। इसलिए यह वही काम करेगा भले ही आप उनका उपयोग न करें। तो, find -name file-sample.rtf आपको वही परिणाम देगा।
Linux FIND किसी अन्य निर्देशिका में
आप उस निर्देशिका से अलग निर्देशिका में खोज सकते हैं जिसमें आप हैं। FIND के बाद निर्देशिका का पथ डालें। यदि आप रूट पर हैं और आप जानते हैं कि फ़ाइल कहीं home/user निर्देशिका में है तो आप उपयोग करेंगे:
find home/user -name file-sample.rtf
यह अभी भी एक रिकर्सिव खोज है, इसलिए यह user के तहत हर निर्देशिका से गुजरेगा।
Linux FIND एकाधिक निर्देशिकाओं में खोज
यदि आप एक साथ कई निर्देशिकाओं में खोज करना चाहते हैं, तो उन्हें कमांड में स्पेस से अलग करके सूचीबद्ध करें।
find /lib /var /bin -name file-sample.rtf
Linux FIND बिना रिकर्सन या रिकर्सन सीमित के साथ
यदि आपने रूट लेवल पर उपरोक्त FIND कमांड का उपयोग किया, तो यह सिस्टम पर हर निर्देशिका को देखेगा। इसलिए यदि आप केवल वर्तमान निर्देशिका तक सीमित रहना चाहते हैं, तो -maxdepth विकल्प का उपयोग करें। -maxdepth के बाद की संख्या Find को बताती है कि रुकने से पहले कितना गहरा जाना है।
-maxdepth 1 का उपयोग करने का अर्थ है केवल यह निर्देशिका।
find -name file-sample.rtf -maxdepth 1
-maxdepth 2 या अधिक संख्या का उपयोग करने का अर्थ है उतने लेवल गहरा जाना।
find -maxdepth 5 -name file-sample.rtf
Linux FIND वाइल्डकार्ड उदाहरण
FIND कमांड एस्टेरिस्क (*) का उपयोग वाइल्डकार्ड के रूप में करता है। इसका उपयोग नाम के किसी भी भाग के लिए करें जिसके बारे में आप अनिश्चित हैं। इसका उपयोग नाम में एक से अधिक बार किया जा सकता है। फ़ाइल प्रकार के बिना फ़ाइल नाम के हिस्से के रूप में, परिणाम उन निर्देशिकाओं को भी शामिल करेंगे जो मेल खाती हैं।
find home/user -name file*sample*
Linux FIND टाइप के अनुसार उदाहरण
केवल फ़ाइल या निर्देशिका खोजने के लिए, -type विकल्प और उपयुक्त वर्णनकर्ता का उपयोग करें। कुछ हैं, लेकिन फ़ाइल और निर्देशिका सबसे आम हैं:
f – फ़ाइल
d – निर्देशिका
b – ब्लॉक डिवाइस
c – कैरेक्टर डिवाइस
l – सिम्बोलिक लिंक
s – सॉकेट
find home/user -name file*sample* -type d
Linux FIND केस इन्सेंसिटिव उदाहरण
Windows के विपरीत, Linux परवाह करता है कि अक्षर बड़ा है या छोटा। इसलिए यदि आप चाहते हैं कि यह File-Sample.rtf और file-sample.rtf दोनों को खोजे, तो -iname विकल्प का उपयोग करें।
find home/user -iname File-Sample.rtf
Linux FIND कई फ़ाइलें उदाहरण
मान लीजिए आप किसी फ़ाइल के .rtf और .html संस्करण ढूंढना चाहते हैं। यह -o (या) ऑपरेटर का उपयोग करके एक कमांड में किया जा सकता है। कुछ डिस्ट्रोस में, आपको नामों को ब्रैकेट के अंदर रखने की आवश्यकता हो सकती है, जैसे ( -name file-sample.rtf -o -name file-sample.html )।
find home/user -name file-sample.rtf -o -name file-sample.html
Linux FIND उन फ़ाइलों को ढूंढें जो नाम से मेल नहीं खातीं
शायद आप जानते हैं कि किसी फ़ाइल का .html संस्करण है, लेकिन यह नहीं जानते कि अन्य हैं या नहीं। आप -not विकल्प. का उपयोग करके .html संस्करण को खोज से फ़िल्टर कर सकते हैं।
find home/user -name file-sample* -not -name *.html
Linux FIND त्रुटि परिणामों के बिना
रिकर्सन के बिना find उदाहरण में, ध्यान दें कि इसने हर निर्देशिका को सूचीबद्ध किया जिसे वह खोज नहीं सका और सही परिणाम। यह कष्टप्रद है। आइए इसे उन सभी "Permission denied" निर्देशिकाओं को दिखाने से रोकें। इसे एक अन्य Linux टर्मिनल कमांड, grep के साथ जोड़ें। आप विशिष्ट शब्दों वाली फ़ाइलों को खोजने के लिए Find के साथ grep का उपयोग भी कर सकते हैं।
find -maxdepth 5 -name file-sample.rtf 2>&1 | grep -v "Permission denied"
आइए 2>&1 को तोड़ें।
2 – stderr को दर्शाता है जो मानक त्रुटि आउटपुट का संक्षिप्त रूप है।
1 – stdout को दर्शाता है जो मानक आउटपुट का संक्षिप्त रूप है
> – इसका अर्थ है कि इसके बाईं ओर जो भी आउटपुट है उसे इसके दाईं ओर जो कुछ भी है उस पर पुनर्निर्देशित करें।
& – एक साथ रखने का अर्थ है।
तो 2>&1 का अर्थ है मानक त्रुटियों को लें और उन्हें पुनर्निर्देशित करें, और फिर उन्हें मानक आउटपुट के साथ एक आउटपुट में एक साथ रखें।
अब | grep -v "Permission denied" को देखें।
| (जिसे पाइप कहा जाता है) – Linux को बताता है कि इसके बाईं ओर जो कुछ भी है उसके परिणामों को इसके दाईं ओर जो कुछ भी है उसे खिलाएं। इसे grep कमांड को खिलाया जा रहा है।
grep – एक टेक्स्ट खोज उपयोगिता है।
-v – grep को -v के बाईं ओर टेक्स्ट से मेल न खाने वाली किसी भी चीज़ को खोजने के लिए कहता है। इस मामले में, यह grep को केवल वही खोजने के लिए कह रहा है जिसमें टेक्स्ट या स्ट्रिंग "Permission denied" नहीं है। तो grep आपको केवल वे परिणाम दिखाएगा जिन्हें आप खोज रहे हैं और कोई भी त्रुटि जो "Permission denied" से मेल नहीं खाती।
Linux FIND अनुमतियों के अनुसार उदाहरण
इसका अच्छी तरह से उपयोग करने के लिए, आपको Linux अनुमतियां सीखने की आवश्यकता है।
उदाहरण फ़ाइलों में सभी की अनुमतियां 664 हैं, सिवाय एक के जिसकी अनुमतियां 775 हैं। इसे खोजने के लिए -perm विकल्प का उपयोग करें।
find Documents/ -name file-sample* -type f -perm 775
Linux FIND आकार के अनुसार उदाहरण
आकार के अनुसार फ़ाइलें ढूंढना आपकी हार्ड ड्राइव को भरने वाली उन विशाल फ़ाइलों को प्राप्त करने के लिए उपयोगी है। -size विकल्प, वांछित आकार, और निम्नलिखित प्रत्ययों में से एक का उपयोग करें। यदि कोई प्रत्यय उपयोग नहीं किया जाता है, तो -size डिफ़ॉल्ट रूप से b होता है। किसी निश्चित आकार के बराबर और बड़ी फ़ाइलों को खोजने के लिए, आकार के सामने प्लस-साइन (+) लगाएं।
M – मेगाबाइट्स
G – गीगाबाइट्स
k – किलोबाइट्स
b – ब्लॉक (512 बाइट्स – डिफ़ॉल्ट)
c – बाइट्स
w – शब्द (दो बाइट्स एक साथ)
find -size +500k
Linux FIND मालिक के अनुसार
मालिक के अनुसार फ़ाइलें ढूंढने के दो तरीके हैं। एक मालिक के उपयोगकर्ता नाम के अनुसार, और दूसरा उपयोगकर्ता के समूह के अनुसार। उपयोगकर्ता नाम के अनुसार खोजने के लिए, -user विकल्प का उपयोग करें, उसके बाद उपयोगकर्ता नाम। उपयोगकर्ता समूह के अनुसार खोजने के लिए, -group उपयोग करें उसके बाद समूह का नाम।
find -user groupname या find -user username
Linux FIND फ़ाइलें अंतिम संशोधित के अनुसार उदाहरण
उन फ़ाइलों को ढूंढने के लिए जो पिछले X दिनों में संशोधित या संपादित की गई थीं, -mtime का उपयोग करें उसके बाद एक संख्या। संख्या के सामने माइनस साइन (–) रखने से उतने दिन पहले से अब तक बदली हुई कोई भी चीज़ मिल जाएगी। प्लस साइन (+) का अर्थ है अब से उतने दिन पहले के भीतर।
find -name "file-sample*" -mtime +5 (5 दिन से अधिक पहले)
find -name "file-sample*" -mtime -5 (5 दिन से कम पहले)
मिनटों में अंतिम संशोधित के अनुसार खोजने के लिए, -mmin विकल्प का उपयोग करें उसके बाद मिनटों की संख्या। ऊपर की तरह + और – का उपयोग करें।
find -name "file-sample*" -mmin -5
find -name "file-sample*" -mmin +5
Linux FIND फ़ाइलें अंतिम एक्सेस समय के अनुसार उदाहरण
अंतिम बार खोली गई फ़ाइलों को खोजने के लिए उपयोग किया जाने वाला विकल्प दिनों के लिए -atime और मिनटों के लिए -amin है। इसके बाद दिनों या मिनटों की संख्या डालें और + और – चिह्न का उपयोग ऊपर की तरह अधिक और कम के रूप में करें।
find -name "file-sample*" -atime -5
find -name "file-sample* -amin -5
FIND को अन्य Linux कमांड के साथ संयोजित करें
ऊपर grep कमांड के साथ find के उपयोग का एक उदाहरण है, और आप इसे कई अन्य के साथ उपयोग कर सकते हैं। आप देख सकते हैं कि find और अन्य कमांड का उपयोग करना बहुत शक्तिशाली और एक बड़ा टाइमसेवर हो सकता है। कल्पना करें कि आपको किसी विशेष प्रकार की फ़ाइल का एक गुच्छा डिलीट करना है। फाइल एक्सप्लोरर में इधर-उधर खोजने के बजाय, बस सही कमांड तैयार करें, और यह सेकंडों में हो जाता है। अब आप find कमांड का उपयोग कैसे करेंगे?