लिनक्स में 'पता लगाने' और 'खोजने' के बीच अंतर क्या है?


41

लिनक्स में दो समान कमांड क्यों हैं? और आम तौर पर उनमें से प्रत्येक का उपयोग करने के लिए क्या परिस्थितियां हैं?


6
गहराई और पूर्णता दोनों में बेहतर उत्तरों के लिए, यूनिक्स और लिनक्स में इस उत्तर को देखें ।
वह ब्राजील के लड़के

जवाबों:


38

findवास्तविक प्रणाली में खोज करता है। धीमी है, लेकिन हमेशा अप-टू-डेट रहती है और अधिक विकल्प (आकार, संशोधन समय, ...) है

locateपहले से निर्मित डेटाबेस (कमांड updatedb) का उपयोग करता है । बहुत तेज़ है, लेकिन एक 'पुराने' डेटाबेस का उपयोग करता है और केवल नाम या उनमें से कुछ हिस्सों को खोजता है।

किसी भी मामले में, man findऔर man locateआगे आपकी मदद करेगा।


1
... और updatedbमोटे तौर पर कुछ पसंद करते हैं find / -type f | gzip > locate.gz
एफ। होरी

10
unix.stackexchange.com/questions/60205/… इस सवाल का अधिक विस्तार से जवाब देता है।
नट्टी के बारे में अखरोट

3

दोनों कमांड locateऔर findएक फ़ाइल मिल जाएगी, लेकिन वे काफी अलग तरीके से काम करते हैं।

locate ऑफ़लाइन मोड में काम करेगा:

  • एक सरल विवरण के लिए, यूनिक्स प्रणाली में फाइल इंडेक्सिंग डेटाबेस जिसे स्लोकैट कहा जाता है, वह उन सभी फाइलों के स्थानों को सूचीबद्ध करेगा जो यूनिक्स प्रणाली के साथ जहाज करते हैं। जब आप निष्पादित करते हैं locate, तो यह उस डेटाबेस का उपयोग किसी विशेष फ़ाइल को खोजने के लिए करेगा। इसके साथ समस्या यह है locateकि यदि आपने अभी एक फ़ाइल बनाई है जिसे आप अब खोजना चाहते हैं, तो पता लगाने से काम नहीं चलेगा क्योंकि सुस्ती डेटाबेस अप-टू-डेट नहीं है। इस समस्या को दूर करने के लिए, आप धीमे डेटाबेस updatedbको अपडेट करने के लिए उपयोग कर सकते हैं । फिर से निष्पादित होने पर अब नई बनाई गई फ़ाइल मिल जाएगी। इस प्रकार, कई लिनक्स सिस्टम प्रशासक नियमित रूप से धीमे डेटाबेस को अपडेट करने के लिए नौकरी का उपयोग करते हैं ।locatecron

find ऑनलाइन / "वास्तविक समय में" मोड में काम करेगा।

  • यह वास्तव में जाना जाएगा और निर्दिष्ट विशेष फ़ाइल को खोजने के लिए सभी निर्देशिकाओं को खोजेगा और यह एक-एक करके प्रत्येक फ़ाइल की जांच करेगा। इसलिए, इसमें बहुत अधिक आई / ओ कॉल की आवश्यकता होती है।

तो प्रकृति के आधार पर, यह स्पष्ट है कि पता लगाने की तुलना में तेजी है लेकिन खोज वास्तविक समय है।

आशा है कि यह विचार को साफ करने में मदद करेगा। शुभकामनाएं। :)


0

locate बस अपने डेटाबेस को देखता है और फ़ाइल स्थान की रिपोर्ट करता है।

find एक डेटाबेस का उपयोग नहीं करता है, यह सभी निर्देशिकाओं और उनकी उप निर्देशिकाओं का पता लगाता है और दिए गए मानदंड से मेल खाने वाली फ़ाइलों की तलाश करता है।


0

खोज का उपयोग करने का एक विकल्प है खोज आदेश। यह कमांड अक्सर तेज होता है और आसानी से पूरे फाइल सिस्टम को खोज सकता है। आप apt-get के साथ कमांड स्थापित कर सकते हैं:

sudo apt-get update
sudo apt-get install mlocate

कारण का पता लगाने की तुलना में तेज़ है क्योंकि यह फाइल सिस्टम पर फ़ाइलों के डेटाबेस पर निर्भर करता है। डेटाबेस को आमतौर पर क्रोन स्क्रिप्ट के साथ दिन में एक बार अपडेट किया जाता है, लेकिन आप इसे मैन्युअल रूप से टाइप करके अपडेट कर सकते हैं:

sudo updatedb

अब यह कमांड चलाएँ। याद रखें, यदि आप हाल ही में अधिग्रहित या बनाई गई फ़ाइलों को खोजना चाहते हैं, तो डेटाबेस को हमेशा अद्यतित होना चाहिए।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.