linux - वाइल्डकार्ड मिलान के आधार पर मैं वर्तमान और उपफोल्डर्स में सभी फ़ाइलों को दोबारा कैसे ढूंढ सकता हूं?




shell (7)

Grep में पाइपिंग अक्सर अधिक सुविधाजनक है; यह आपको मनमानी वाइल्डकार्ड मिलान के लिए नियमित अभिव्यक्तियों की पूर्ण शक्ति देता है।

उदाहरण के लिए, फ़ाइल नाम में केस असंवेदनशील स्ट्रिंग "foo" के साथ सभी फ़ाइलों को खोजने के लिए:

~$ find . -print | grep -i foo

वाइल्डकार्ड मिलान के आधार पर मैं वर्तमान और उपफोल्डर्स में सभी फ़ाइलों को दोबारा कैसे ढूंढ सकता हूं?


आप उपयोग कर सकते हैं:

# find . -type f  -name 'text_for_search'

यदि आप आरईजीएक्स उपयोग -नाम का उपयोग करना चाहते हैं

# find . -type f  -iname 'text_for_search'

एक पैटर्न से मेल खाने वाली सभी फाइलें मिलेंगी:

find . -name "*foo"

हालांकि, अगर आप एक तस्वीर चाहते हैं:

tree -P "*foo"

उम्मीद है की यह मदद करेगा!


फ़ाइल खोज के लिए
find / -xdev -name settings.xml -> पूरे कंप्यूटर को find / -xdev -name settings.xml
find ./ -xdev -name settings.xml -> वर्तमान निर्देशिका और इसकी उप निर्देशिका

एक्सटेंशन प्रकार के साथ फाइलों के लिए

find . -type f -name "*.iso"

यदि आप वाइल्डकार्ड के साथ विशेष फ़ाइल खोजना चाहते हैं, तो आप निम्न कोड का उपयोग कर सकते हैं:

find . -type f -name "*.conf"

मान लीजिए, आप यहां से प्रत्येक .conf फ़ाइलों को खोजना चाहते हैं:

. का मतलब है यहां से खोज शुरू की गई (वर्तमान जगह)
-type मतलब है कि खोज वस्तु का प्रकार यहां फ़ाइल (एफ) है।
-name मतलब है कि आप * .conf नामों वाली फ़ाइलों को खोजना चाहते हैं।


रिकर्सिव फ़ाइल की खोज करने का डिफ़ॉल्ट तरीका, और ज्यादातर मामलों में उपलब्ध है

find . -name "filepattern"

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

man find

या यदि मैन पेज आपके सिस्टम पर उपलब्ध नहीं हैं

find --help

हालांकि, वहां अधिक आधुनिक और तेज उपकरण हैं, जो आपके पूरे फाइल सिस्टम को घुमा रहे हैं और आपकी फाइलों को अनुक्रमणित कर रहे हैं, एक ऐसा सामान्य उपकरण ढूंढता है या स्लोक / mlocate है, आपको इसे इंस्टॉल करने के तरीके पर अपने ओएस के मैन्युअल की जांच करनी चाहिए, और एक बार इंस्टॉल किया गया है, इसे डेटाबेस शुरू करने की आवश्यकता है, अगर स्थापित स्क्रिप्ट आपके लिए नहीं करती है, तो इसे टाइप करके मैन्युअल रूप से किया जा सकता है

sudo updatedb

और, कुछ विशेष फ़ाइल प्रकार देखने के लिए इसका उपयोग करने के लिए

locate filename

या, वर्तमान निर्देशिका के भीतर से फ़ाइल नाम या पटर देखने के लिए, आप टाइप कर सकते हैं:

 pwd | xargs -n 1 -I {} locate "filepattern"

यह फाइलों के अपने डेटाबेस को देखेगा और आपके द्वारा टाइप किए गए पैटर्न से मिलान करने वाले पथ नामों को तुरंत प्रिंट करेगा। पता लगाने के विकल्पों की पूरी सूची देखने के लिए, टाइप करें: locate --help या man locate

इसके अतिरिक्त आप क्रॉन जॉब के माध्यम से निर्धारित समय पर अपने डेटाबेस को अपडेट करने के लिए पता कॉन्फ़िगर कर सकते हैं, इसलिए नमूना क्रॉन जो 1AM पर डीबी अपडेट करता है, इस तरह दिखेगा:

0 1 * * * updatedb

इन क्रॉन नौकरियों को रूट द्वारा कॉन्फ़िगर करने की आवश्यकता है, क्योंकि अद्यतनब को पूरे फाइल सिस्टम को पार करने के लिए रूट विशेषाधिकार की आवश्यकता है।


find -L . -name "foo*"

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








shell