मैं एक निर्दिष्ट निर्देशिका के भीतर खोज आदेश का उपयोग कैसे करूं?


16

मैं locateलिनक्स पर कमांड का उपयोग कर रहा हूं । इसका मेरा वर्तमान उपयोग पूरे फाइल सिस्टम के माध्यम से खोज करता है। मैं केवल यह चाहता हूं कि यह एक विशिष्ट निर्देशिका के भीतर खोज हो। मैं यह कैसे कर सकता हूँ?


TLDR: यहां locateएक निर्दिष्ट निर्देशिका के भीतर खोज करने के लिए एक टर्मिनल उपनाम है : alias my_locate="updatedb -U /path/to/yourdir -o /path/to/your_dir_locate.db; locate -d /path/to/dir_locate.db " एक बार जब उपनाम अन्य प्रभावी होता है, तो टर्मिनल प्रकार पर my_locate *foo*और आप दौड़ से दूर हो जाते हैं। आप डेटाबेस अपडेट्स को संक्षिप्त कर सकते हैं और डेटाबेस को कोनैट कैरेक्टर का उपयोग करके खोज का पता लगा सकते हैं। rtfm: linux.die.net/man/8/updatedb
Eric Leschinski

जवाबों:


11

एक अन्य तरीका यह होगा कि पैटर्न मिलान का उपयोग करें locate:

locate '/some/directory/*filename*'

नीचे दिए गए कमांड के आउटपुट की तुलना करें:

$ locate tmpfile
/usr/lib64/perl5/auto/POSIX/tmpfile.al
/usr/share/man/fr/man3/tmpfile.3.gz
/usr/share/man/ja/man3/tmpfile.3.gz
/usr/share/man/man3/tmpfile.3.gz
/usr/share/man/man3p/tmpfile.3p.gz
$
$ locate '/usr/lib64/*tmpfile*'
/usr/lib64/perl5/auto/POSIX/tmpfile.al
$ 

locate /usr/lib*tmpfile* वही परिणाम देता है।


3
+1 यह सही उत्तर है। ध्यान दें कि यदि आप वाइल्डकार्ड शामिल करते हैं, तो सीमाएं निश्चित हो जाती हैं। वह उपरोक्त उदाहरण में है, $ locate '/usr/lib64/*tmpfile'कोई परिणाम नहीं लौटाएगा।
ज़ोफर

यदि आप सरल वाइल्डकार्ड की तुलना में अधिक नियंत्रण चाहते हैं, तो आप हमेशा के locateमाध्यम से परिणामों को पाइप कर सकते हैं grep
लादादादा

5

अपनी विशिष्ट निर्देशिका के लिए धीमे डेटाबेस बनाएँ:

updatedb -U /path/to/directory

और इसके साथ खोजें:

locate <search_string>

अपडेट करें

यह मेरे Gentoo सिस्टम पर ठीक काम करता है लेकिन CentOS में -Uविकल्प शामिल नहीं है। तो, आप इसके बजाय नीचे की कोशिश कर सकते हैं:

इसके साथ डेटाबेस बनाएँ:

# updatedb -U /path/to/dir -o dir_locate.db

और खोज:

# locate -d dir_locate.db <search_string>

3
"पता-यू" एक अवैध विकल्प त्रुटि फेंकता है ... अनुमान लगा कि आपका मतलब "अपडेट-यू" है? यदि आप कभी भी किसी अन्य निर्देशिका को खोजना चाहते हैं तो यह नोट करने के लिए भी अच्छा है कि एक mlocate.db पुनर्निर्माण (अद्यतन) की आवश्यकता है।
घाट

ओह, मेरे Gentoo पर यह ठीक काम करता है, लेकिन CentOS में यह विकल्प शामिल नहीं है।
क्वांटा

वोट नीचे? क्या आप कृपया एक टिप्पणी छोड़ सकते हैं?
क्वांटा

यदि आपके पास त्रुटि है: तो updatedb: can not change group of file 'db.db.kHhzFz' to 'mlocate': Operation not permitted, लिनक्स पर एक साधारण उपयोगकर्ता के रूप में अपडेटेड कमांड का उपयोग कैसे करें, इसकी जांच करें
केनोरब

2

सबसे आसान जवाब मैं सोच सकता हूं

locate search_term | grep "/specified/directory"

बेहतर उपाय हो सकता है कि "खोज" और इसके पथ विकल्प का उपयोग करें ...


0

सबसे आसान तरीका निम्न उदाहरण में है:

updatedb -o ~/tmp.db -l0 -U $PWD
locate   -d ~/tmp.db "foo"

$PWDअपनी विशिष्ट निर्देशिका में बदलें ।

ऊपर दिया गया उदाहरण केवल विशिष्ट निर्देशिका के लिए आपका स्थानीय डेटाबेस बनाएगा।

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