लिनक्स में फाइलें और निर्देशिका कैसे खोजें

लिनक्स ऑपरेटिंग सिस्टम में, खोज कमांड का उपयोग आपके कंप्यूटर पर फ़ाइलों और निर्देशिकाओं को खोजने के लिए किया जा सकता है। आगे बढ़ने के लिए, निम्न सूची से एक लिंक चुनें या क्रम में प्रत्येक अनुभाग से गुजरें।

नोट: कमांड लाइन का उपयोग करने के लिए टर्मिनल सत्र खोलकर, खोजने के लिए उपयोग करें।

खोजने की बुनियादी कार्यक्षमता

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

  • हर फाइल / घर / आशा / दस्तावेज में
  • प्रत्येक उपनिर्देशिका / घर / आशा / दस्तावेज में
  • उन उपनिर्देशिकाओं में से प्रत्येक में हर फ़ाइल।

इसे कार्रवाई में देखते हैं। सबसे पहले, pwd कमांड का उपयोग करके हमारी कार्यशील निर्देशिका की जाँच करें:

लोक निर्माण विभाग

 / घर / आशा / दस्तावेज़ 

अब बिना किसी विकल्प के खोजते हैं:

खोज

 । ./images/hp/hp/images/hp/snape.jpg ./images/hp/harry.jpg ./images/memes//images/memes/winemiscoming.jpg//agesages/memes/goodguygary.JPG। /images/memes/picard.jpg ./gimp-2.8.16.tar.bz2 ./hp-fanfic/hp-fanfic/malfoys-revenge.doc/hp-fanfic/weekend-at-hagreds.doc//। hp-fanfic / dumbledores-lament.doc/archlinux-2016.02.01-dual.iso 

इस उदाहरण में, हम अपने दस्तावेज़ फ़ोल्डर में और उसके नीचे कुल दस फाइलें और चार उपनिर्देशिकाएँ देखते हैं।

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

खोजो।

उपरोक्त उदाहरण खोज का उपयोग करने का "उचित" तरीका है। यदि आप इसे किसी अन्य UNIX- जैसी ऑपरेटिंग सिस्टम, जैसे FreeBSD, पर उपयोग करने का प्रयास करते हैं, तो आप पाएंगे कि निर्देशिका निर्दिष्ट करना आवश्यक है, इसलिए कमांड के इस रूप का उपयोग करना अच्छा है।

निर्दिष्ट करने के लिए कि कहां खोजें

केवल निर्देशिका और घर / आशा / दस्तावेज़ / चित्र में निहित फ़ाइलों और उपनिर्देशिकाओं को सूचीबद्ध करने के लिए, इसे कमांड के पहले तर्क के रूप में निर्दिष्ट करें:

खोज / घर / आशा / दस्तावेज / चित्र

 / होम / आशा / दस्तावेज / चित्र / होम / आशा / दस्तावेज / चित्र / hp /home/hope/Documents/images/hp/snape.jpg /home/hope/Documents/hp/harry.jpg / home / आशा / दस्तावेज़ / चित्र / मेम्स /home/hope/Documents/images/memes/winteriscoming.jpg/home/hope/Documents/images/memes/goodguygary.JPG/home/hope/Documents/images/memes/picard.jpg 

ध्यान दें कि परिणामों में पूर्ण पथ भी दिखाया गया है।

यदि हमारी कार्यशील निर्देशिका / घर / आशा / दस्तावेज हैं, तो हम निम्नलिखित कमांड का उपयोग कर सकते हैं, जो समान फाइलें ढूंढता है:

खोजें ।/images

लेकिन इस बार, आउटपुट खोज के शुरुआती स्थान को दर्शाता है और इस तरह दिखता है:

 ./images/hp/hp/images/hp/snape.jpg ./images/hp/harry.jpg ./images/memes//images/memes/winemiscoming.jpg//agesages/memes/goodguygary.JPG। /images/memes/picard.jpg 

डिफ़ॉल्ट रूप से, खोज आपके आरंभिक स्थान के प्रत्येक उपनिर्देशिका में दिखेगा। यदि आप खोज करने के लिए उपनिर्देशिका के कितने स्तरों को प्रतिबंधित करना चाहते हैं, तो आप एक नंबर के साथ -maxdepth विकल्प का उपयोग कर सकते हैं।

उदाहरण के लिए, निर्दिष्ट करना -maxdepth 1 केवल उस निर्देशिका में खोज करेगा जहाँ खोज शुरू होती है। यदि कोई उपनिर्देशिका पाई जाती है, तो उन्हें सूचीबद्ध किया जाएगा, लेकिन खोजा नहीं गया।

खोजो। —मक्षदीप १

 । ./images//bigfiles.txt ./gimp-2.8.16.tar.bz2//hp-fanfic/archlinux-2016.02.01-dual.iso 

निर्दिष्ट करना -maxdepth 2 निर्देशिका और एक उपनिर्देशिका गहरी खोज करेगा:

खोजो। -मक्षदीप २

 । ./images//images/hp/images/memes/gimp-2.8.16.tar.bz2 ./hp-fanfic/hp-fanfic/malfoys.revenge.doc/hp-fanfic/weekend-at-at। hagreds.doc/hp-fanfic/dumbledores-lament.doc/archlinux-2016.02.01-dual.iso 

निर्दिष्ट करना -मैक्सडीप 3 उस से एक स्तर गहरा खोज करेगा:

खोजो। -मक्षदीप ३

 । ./images/hp/hp/images/hp/snape.jpg ./images/hp/harry.jpg ./images/memes//images/memes/winemiscoming.jpg//agesages/memes/goodguygary.JPG। /images/memes/picard.jpg ./gimp-2.8.16.tar.bz2 ./hp-fanfic/hp-fanfic/malfoys-revenge.doc/hp-fanfic/weekend-at-hagreds.doc//। hp-fanfic / dumbledores-lament.doc/archlinux-2016.02.01-dual.iso 

नाम से खोजना

केवल एक निश्चित नाम वाले फ़ाइलों और निर्देशिकाओं के मिलान के लिए अपने खोज परिणामों को प्रतिबंधित करने के लिए, -name विकल्प का उपयोग करें और नाम को उद्धरणों में रखें:

खोजो। -नाम "picard.jpg"

 ./images/memes/picard.jpg 

आप वाइल्डकार्ड्स को अपने फ़ाइल नाम के हिस्से के रूप में भी उपयोग कर सकते हैं। उदाहरण के लिए, उन सभी फ़ाइलों को खोजने के लिए जिनका नाम .jpg में समाप्त होता है, आप बाकी फ़ाइल नाम का प्रतिनिधित्व करने के लिए एक तारांकन चिह्न का उपयोग कर सकते हैं। जब आप कमांड चलाते हैं, तो शेल उस फ़ाइल के नाम को ग्लोब से जोड़ देगा, जो पैटर्न से मेल खाता है:

खोजो। -नाम "* .jpg"

 ./images/hp/snape.jpg ./images/hp/harry.jpg ./images/memes/winteriscoming.jpg ./images/memes/picard.jpg 

ध्यान दें कि हमारे कमांड ने फ़ाइल को सूचीबद्ध नहीं किया है जिसका विस्तार ( JPG ) बड़े अक्षरों में है। ऐसा इसलिए है क्योंकि अन्य ऑपरेटिंग सिस्टम के विपरीत, जैसे कि माइक्रोसॉफ्ट विंडोज, लिनक्स फ़ाइल नाम केस-संवेदी हैं।

इसके बजाय केस-असंवेदनशील खोज करने के लिए, -iname विकल्प का उपयोग करें:

खोजो। -नाम "* .jpg"

 ./images/hp/snape.jpg ./images/hp/harry.jpg/images/memes/winteriscoming.jpg ./images/memes/goodguythary.JPG//agesages/memes/picard.jpg। 

केवल फाइलें, या केवल निर्देशिकाएं खोजना

केवल फाइलों को सूचीबद्ध करने और अपने परिणामों से निर्देशिका नामों को छोड़ने के लिए, निर्दिष्ट करें- f :

खोजो। -प्रकार f

 ./images/hp/snape.jpg ./images/hp/harry.jpg/images/memes/winteriscoming.jpg ./images/memes/goodguythary.JPG ./images/memes/picard.jpg/gimp-2.8.8। .16.tar.bz2 ./hp-fanfic/malfoys-revenge.doc/hp-fanfic/weekend-at-hagreds.doc ./hp-fanfic/dumbledores-lament.doc/archlinux-2016.02.01-dual। ।आईएसओ 

केवल निर्देशिकाओं को सूचीबद्ध करने और फ़ाइल नामों को छोड़ने के लिए, -type d निर्दिष्ट करें:

खोजो। -प्रकार d

 । ./images//images/hp/images/memes/hp-fanfic 

आकार के आधार पर फाइलें ढूंढना

केवल एक निश्चित आकार की फ़ाइलों को प्रदर्शित करने के लिए, आप -size विकल्प का उपयोग कर सकते हैं। आकार को निर्दिष्ट करने के लिए, एक प्लस या माइनस साइन ("से अधिक" या "कम से कम"), एक संख्या, और मात्रात्मक प्रत्यय जैसे कि, एम, या जी का उपयोग करें

उदाहरण के लिए, उन फ़ाइलों को खोजने के लिए जो "50 किलोबाइट से बड़ी हैं", का उपयोग करें -size + 50k :

खोजो। -साइज + 50k

 ./images/memes/winteriscoming.jpg ./gimp-2.8.16.tar.bz2 ./archlinux-2016.02.01-dual.iso 

"10 मेगाबाइट से बड़ी" फ़ाइलों के लिए, उपयोग करें + 10M :

खोजो। -साइज + 10 मी

 ./gimp-2.8.16.tar.bz2 ./archlinux-2016.02.01-dual.iso 

"1 गीगाबाइट से बड़ा" के लिए, उपयोग -Size + 1G :

खोजो। -साइज + 1 जी

 ./archlinux-2016.02.01-dual.iso 

एक निश्चित आकार सीमा में फ़ाइलों के लिए, दो - विकल्प विकल्पों का उपयोग करें। उदाहरण के लिए, "10 मेगाबाइट से बड़ी, लेकिन 1 गीगाबाइट से छोटी" फ़ाइलों को खोजने के लिए, निर्दिष्ट करें + 10M -साइज़ -1G :

खोजो। -साइज + 10 एम -साइज -1 जी

 ./gimp-2.8.16.tar.bz2 

संशोधन, पहुंच या स्थिति में परिवर्तन के आधार पर फाइलें ढूंढना

-माइम विकल्प खोज को प्रतिबंधित करता है कि फ़ाइल की सामग्री को संशोधित किए हुए कितने दिन हुए। अतीत में दिनों को निर्दिष्ट करने के लिए, एक नकारात्मक संख्या का उपयोग करें। उदाहरण के लिए, केवल उन फाइलों को खोजने के लिए जिन्हें पिछले दो दिनों (48 घंटे पहले) में संशोधित किया गया था, -mtime -2 :

खोजो। -मस्त -2

-Mmin विकल्प एक ही काम करता है, लेकिन मिनटों के संदर्भ में, दिन नहीं। उदाहरण के लिए, यह कमांड केवल पिछले आधे घंटे में संशोधित फाइलें दिखाती है:

खोजो। -मिन -30

इसी तरह का एक विकल्प है -टाइम, जो यह जांचता है कि किसी फ़ाइल की स्थिति को अंतिम बार बदला गया था, जिसे दिनों में मापा गया था। स्थिति परिवर्तन फ़ाइल के मेटाडेटा में परिवर्तन है। उदाहरण के लिए, किसी फ़ाइल की अनुमतियों को बदलना स्थिति परिवर्तन है।

विकल्प -मिन मिनट में मापी गई स्थिति में परिवर्तन की खोज करेगा।

आप तब भी खोज सकते हैं जब किसी फ़ाइल को अंतिम बार एक्सेस किया गया था - दूसरे शब्दों में, जब इसकी सामग्री हाल ही में देखी गई थी। -Atime विकल्प का उपयोग उनके हाल के एक्सेस समय के आधार पर फाइलों को खोजने के लिए किया जाता है, जिन्हें दिनों में मापा जाता है।

-Amin विकल्प समान खोज प्रतिबंध का प्रदर्शन करेगा, लेकिन मिनटों में मापा जाएगा।

पाठ फ़ाइल में आउटपुट पुनर्निर्देशित करना

यदि आप बहुत बड़ी खोज कर रहे हैं, तो आप अपने खोज परिणामों को एक फ़ाइल में सहेजना चाह सकते हैं, ताकि आप बाद में परिणाम देख सकें। आप फ़ाइल में अपने खोज आउटपुट को पुनर्निर्देशित करके ऐसा कर सकते हैं:

खोजो। -नाम "* .jpg"> images.txt

फिर आप अपने परिणाम एक पाठ संपादक में खोल सकते हैं, या उन्हें बिल्ली कमांड के साथ प्रिंट कर सकते हैं।

cat images.txt

 ./images/hp/snape.jpg ./images/hp/harry.jpg/images/memes/winteriscoming.jpg ./images/memes/goodguythary.JPG//agesages/memes/picard.jpg। 

वैकल्पिक रूप से, आप अपने आउटपुट को टी कमांड पर पाइप कर सकते हैं, जो आउटपुट को स्क्रीन पर प्रिंट करेगा और इसे एक फाइल में लिख देगा:

खोजो। -साइज + 500M | tee bigfiles.txt

 ./archlinux-2016.02.01-dual.iso 

बिल्ली bigfiles.txt

 ./archlinux-2016.02.01-dual.iso 

दबाना त्रुटि संदेश

खोज करते समय आपको त्रुटि संदेश "अनुमति अस्वीकृत" प्राप्त हो सकता है। उदाहरण के लिए, यदि आप रूट निर्देशिका को एक सामान्य उपयोगकर्ता के रूप में खोजते हैं:

खोजें /

 खोजें: `/ var / lib / sudo / ts’: अनुमति से इनकार किया गया: `/ var / lib / sudo / lectured’: अनुमति से इनकार किया गया खोजें: `/ var / lib / polkit-1’: अनुमति से इनकार किया गया खोजें: `/ var / lib / कंटेनर ': अनुमति देने से इनकार किया गया: `/var/lib/gdm3/.dbus': अनुमति देने से इनकार किया गया:` /var/lib/gdm3/.config/ibus ': अनुमति से इनकार किया ... 

यदि आपको लगता है कि आपके उपयोगकर्ता खाते को पढ़ने की अनुमति नहीं है तो किसी फ़ाइल तक पहुँचने का प्रयास करने पर आपको वह त्रुटि संदेश प्राप्त होगा। आप खोज को सुपरयूज़र ( रूट ) के रूप में करने में सक्षम हो सकते हैं, जिसकी सिस्टम पर हर फ़ाइल तक पूरी पहुंच है। लेकिन चीजों को जड़ के रूप में करने की सिफारिश नहीं की जाती है, जब तक कि कोई अन्य विकल्प न हो।

यदि आपको केवल "अनुमति अस्वीकृत" संदेशों को छिपाने की आवश्यकता है, तो आप 2 और> 1 जोड़ सकते हैं | grep -v "अनुमति अस्वीकृत" आपके आदेश के अंत तक, इस तरह:

/ 2> और 1 खोजें | grep -v "अनुमति अस्वीकृत"

उपरोक्त उदाहरण आपकी खोज से "अनुमति अस्वीकृत" संदेशों को फ़िल्टर करता है। कैसे?

2> और 1 एक विशेष रीडायरेक्ट है जो कि आउटपुट संदेश को grep कमांड में आउटपुट की संयुक्त लाइनों को पाइप करने के लिए मानक आउटपुट में भेजता है। grep -v तब "अनुमति से वंचित" पर उलटा मैच करता है, केवल उन पंक्तियों को प्रदर्शित करता है जिनमें वह स्ट्रिंग नहीं होता है।

त्रुटि संदेशों को फ़िल्टर करने के लिए grep को पुनर्निर्देशित करना और उपयोग करना एक उपयोगी तकनीक है जब "अनुमति अस्वीकृत" आपके खोज परिणामों को अव्यवस्थित कर रही है और आप खोज को मूल नहीं कर सकते।

उदाहरण

~। -नाम "* .txt" -मिन -120

अपने घर निर्देशिका में सभी फ़ाइलें खोजें और नीचे जो "एक्सटेंशन .txt " में समाप्त हो। केवल पिछले दो घंटों में एक्सेस की गई फ़ाइलों को प्रदर्शित करें।

खोजो। -नाम "* .zip" -size + 10M -mtime -3

कार्यशील निर्देशिका में सभी फ़ाइलें खोजें और जिनके नाम के नीचे एक्सटेंशन " .zip " है और जिनका आकार 10 मेगाबाइट से अधिक है। केवल उन फ़ाइलों को प्रदर्शित करें जिनकी सामग्री पिछले 72 घंटों में संशोधित की गई थी।

खोजो। -नाम "* रिपोर्ट *" -type f -maxdepth 2

उन फ़ाइलों के लिए केस-असंवेदनशील खोज करें जिसमें उनके नाम में " रिपोर्ट " शब्द हो। यदि खोज को अपने नाम में "रिपोर्ट" के साथ एक निर्देशिका मिलती है, तो इसे प्रदर्शित न करें। केवल कार्यशील निर्देशिका में खोजें, और उसके नीचे एक निर्देशिका स्तर।

find / -name "* init *" 2> & 1 | grep -v "अनुमति अस्वीकृत" | टी ~ / initfiles.txt

उस सिस्टम पर सभी फ़ाइलों को ढूंढें जिनके नाम में " इनिट " है, त्रुटि संदेशों को दबाकर। स्क्रीन पर परिणाम प्रदर्शित करें और उन्हें " initfiles.txt " नाम से अपने घर निर्देशिका में एक फ़ाइल में आउटपुट करें।