लिनक्स में टर्मिनल से फ़ाइलों को खोजने और लोकेट करने के कुछ तरीके हैं, और find, locate, which और whereis ऐसा करने के लिए आमतौर पर उपयोग किए जाने वाले कुछ कमांड हैं। आइए इन चार खोज कमांड, उनकी समानताओं और अंतरों पर एक नज़र डालें।
1. find
किसी भी निर्दिष्ट डायरेक्टरी के भीतर फ़ाइलों को खोजने का सीधा दृष्टिकोण find कमांड का उपयोग करना है। यदि खोज करने के लिए डायरेक्टरी स्पष्ट रूप से निर्दिष्ट नहीं है, तो खोज वर्तमान डायरेक्टरी पर की जाएगी।
निम्न स्क्रीनशॉट दिखाता है कि कैसे वर्तमान डायरेक्टरी (.) के भीतर, .txt एक्सटेंशन के साथ समाप्त होने वाले सभी फ़ाइलनाम के लिए खोज की जाती है।
खोज को टाइमस्टैम्प, फ़ाइल अनुमतियों, फ़ाइल आकार, फ़ाइल प्रकार, फ़ाइल मालिक आदि के आधार पर भी किया जा सकता है। खोज पैरामीटर्स को नियंत्रित करने के लिए नियमित अभिव्यक्तियों का उपयोग किया जा सकता है। find कमांड पर अधिक विस्तृत निर्देश यहां पाए जा सकते हैं।
2. locate
यह कमांड नाम से फ़ाइलों को खोजने का एक और तरीका है। पिछला कमांड निर्दिष्ट डायरेक्टरी को खोजता है और फिर उपयोगकर्ता को परिणाम प्रदान करता है। यह टूल "mlocate.db" नामक डेटाबेस के खिलाफ खोज करता है, जो "/var/lib/mlocate/mlocate.db" में स्थित है। यह डेटाबेस क्रॉन यूटिलिटी द्वारा हर सुबह अपडेट किया जाता है।
कमांड find की तुलना में अधिक तेजी से निष्पादित होता है क्योंकि खोज एक मौजूदा डेटाबेस के खिलाफ है जिसमें पहले से ही सिस्टम पर सभी फ़ाइलों और डायरेक्टरी की सूची तैयार है।
locate के बाद फ़ाइल नाम उस पूर्ण पथ नाम को प्रदर्शित करता है जहां वह फ़ाइल मौजूद है।
आइए मान लें कि होम डायरेक्टरी में एक स्क्रिप्ट बनाई गई है।
यदि हम नवनिर्मित और कॉपी की गई स्क्रिप्ट को लोकेट करने का प्रयास करते हैं, तो हमें कोई आउटपुट नहीं मिलेगा।
locate myscript
चूंकि क्रॉन केवल सुबह डेटाबेस को अपडेट करता है, यदि दिन के दौरान सिस्टम में कोई फ़ाइलें जोड़ी जाती हैं, तो डेटाबेस को मैन्युअली अपडेट करने की आवश्यकता होती है। यह updatedb कमांड का उपयोग करके किया जा सकता है।
sudo updatedb
यदि हम कस्टम स्क्रिप्ट को "लोकेट" करने का प्रयास करते हैं, तो यह फ़ाइल को लोकेट करने में सक्षम होगा।
3. which
फ़ाइलों को खोजने के कमांड पर चर्चा करने के बाद, आइए एक ऐसे कमांड पर ध्यान दें जो सिस्टम पर एक्ज़ीक्यूटेबल्स के पूर्ण पथ को खोजने में मदद कर सकता है: which।
एक एक्ज़ीक्यूटेबल/स्क्रिप्ट/बाइनरी सिस्टम में कई स्थानों पर मौजूद हो सकती है। which $PATH और $MANPATH एनवायरनमेंट वेरिएबल्स में निर्दिष्ट डायरेक्टरी में निर्दिष्ट एक्ज़ीक्यूटेबल के अस्तित्व की खोज करता है।
किसी भी स्विच के बिना, which एक एक्ज़ीक्यूटेबल के लिए पाया गया पहला पूर्ण पथ प्रदर्शित करता है।
-a स्विच निर्दिष्ट एक्ज़ीक्यूटेबल के लिए पाए गए सभी पूर्ण पथों को प्रदर्शित करता है।
एक के बाद एक एक्ज़ीक्यूटेबल्स निर्दिष्ट करके कई एक्ज़ीक्यूटेबल्स के पूर्ण पथ पाए जा सकते हैं।
4. whereis
whereis एक और कमांड है और एक एक्ज़ीक्यूटेबल के बारे में तीन जानकारी प्राप्त करने के लिए उपयोग किया जाता है:
- बाइनरी का पूर्ण पथ
- उस बाइनरी के सोर्स कोड का पूर्ण पथ जो सिस्टम पर मौजूद है
- उस बाइनरी के लिए मौजूद मैनुअल का पूर्ण पथ
"bzgrep" के लिए, बाइनरी "/bin" में मौजूद है, और मैनुअल "/usr/share/man/man1" में मौजूद है। इसका सोर्स कोड सिस्टम पर मौजूद नहीं है।
whereis को -b स्विच का उपयोग करके केवल बाइनरी के पूर्ण पथ को खोजने का निर्देश दिया जा सकता है। खोज -B स्विच के बाद सूचीबद्ध डायरेक्टरी में केवल की जा सकती है। -f के बाद नाम उन सभी बाइनरी को निर्दिष्ट करते हैं जिनके लिए जानकारी प्राप्त करने की आवश्यकता है।
इसी तरह, खोज को केवल सोर्स कोड या केवल मैनुअल तक सीमित किया जा सकता है, -s और -m स्विच का उपयोग करके। -S और -M के बाद डायरेक्टरी नाम सोर्स कोड और मैनुअल के लिए खोज करने के लिए डायरेक्टरी निर्दिष्ट करते हैं।
-l स्विच whereis द्वारा खोज करने के लिए उपयोग किए जाने वाले सभी डायरेक्टरी के पूर्ण पथ की विस्तृत लिस्टिंग प्रदान करेगा।
निष्कर्ष
टर्मिनल में फ़ाइलों को खोजने और लोकेट करने के लिए टूल्स की कोई कमी नहीं है। मुझे आशा है कि अब आपको लिनक्स सिस्टम पर चार उपयोगी खोज टूल्स के बारे में अच्छा अंदाजा है। यदि आपको उनके उपयोग पर अधिक विवरण चाहिए, तो आप विस्तृत दस्तावेज़ीकरण के लिए उनके मैन पेज देख सकते हैं।