मैक के लिए लिनक्स के अपडेटेड कमांड के बराबर क्या है?


234

यदि मैं locateएक लिनक्स मशीन पर कमांड का उपयोग करना चाहता हूं , तो मैं आमतौर पर sudo updatedbडेटाबेस को अपडेट करने के लिए पहले चलाता हूं । मैं locateOS X 10.5 पर कमांड चला सकता हूं लेकिन मुझे नहीं मिल रहा है updatedb। मैक के लिए इसी अद्यतन क्या है?


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

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

1
जब पहली बार locateएक ओएस एक्स बॉक्स पर चल रहा है तो यह आपको चलाने के लिए कहता है sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.locate.plist
Török Gábor

12
इस बात पर निर्भर करते हुए कि आपको किस चीज के लिए उपयोग locateकरना है, आप स्पॉटलाइट के लिए कमांड लाइन इंटरफेस का उपयोग करने के लिए अधिक सुविधाजनक हो सकते हैं mdfind, क्योंकि स्पॉटलाइट डेटाबेस लगभग हमेशा अप-टू-डेट है, और पता लगाने की तुलना में बहुत अधिक कार्यक्षमता प्रदान करता है। man mdfind
पॉल आर १

जवाबों:


327

यह locate.updatedbमैक पर है।

सुडो / सुसर / लिबेक्सेक / लोकेट.अपडेटेड

अधिक जानकारी के लिए Find.updatedb मैन पेज देखें


9
वह manपृष्ठ भी दावा करता है: यह आमतौर पर सप्ताह में एक बार /System/Library/LaunchDaemons/com.apple.locate.plist द्वारा चलाया जाता है। (और man locateउस स्क्रिप्ट के बारे में एक बताता है: /usr/libexec/locate.updatedb स्क्रिप्ट का पता लगाने के लिए डेटाबेस अपडेट करें )
Arjan

5
@ अर्जन: इसे सप्ताह में एक बार चलाया जाना चाहिए, लेकिन डिफ़ॉल्ट यह अक्षम है और जिस समय इसे किया जाना चाहिए वह रविवार को सुबह 3 बजे (या कुछ इसी तरह का) है, जो वास्तव में उपयोगी नहीं है :)
स्टडर

लिनक्स पर मैं आमतौर पर दौड़ता हूं sudo ionice -c3 updatedbजो updatedbi / o कंट्रोलर को अच्छी तरह से साझा करना बताता है (लेकिन यह अच्छा नहीं है) मुझे नहीं लगता कि यह कमांड मैक पर उपलब्ध है। मुझे -rनियमित अभिव्यक्ति ध्वज होने की भी याद आती है, जिसका उपयोग GNU डिटेक्ट के साथ किया जा सकता है, हालाँकि मुझे यकीन नहीं है कि मैं homebrew का उपयोग करना चाहता हूँ और @Grogs द्वारा उल्लिखित GNU का पता लगाना चाहता हूँ
cwd

3
उदाहरण के लिए "खोज (-r)" और "अपडेटेड" जो कि स्पॉटलाइट ("-i" वैकल्पिक का उपयोग करता है) के लिए macosx विकल्प: mdfind -name "mp4" | egrep -i "^ / उपयोगकर्ता। * डाउनलोड / /। स्टफ"
माइकल

इसके अलावा, अगर आपको वे फाइलें नहीं मिलती हैं, जिनकी आप अपेक्षा करते हैं, तो इस प्रासंगिक कैविएट को मैनपेज के BUGS अनुभाग से नोट करें : The locate database is typically built by user ''nobody'' and the locate.updatedb(8) utility skips directories which are not readable for user ''nobody'', group ''nobody'', or world. For example, if your HOME directory is not world-readable, none of your files are in the database
आशुतोष जिंदल

85

आप कमांड उपलब्ध sudo ln -s /usr/libexec/locate.updatedb /usr/local/bin/updatedbकराने के लिए कर सकते हैं updatedb


हेह, मैंने इसे एक टिप्पणी के रूप में पोस्ट किया है .. फिर देखा आपने यह कहा। मुझे लगता है कि यह बनाने के लिए एक अच्छा सा मॉड है। :)
जेम्स टी स्नेल

3
या इसे अपने .bash_profile
जिम जॉनसन

19

व्यक्तिगत रूप से, मैंने अभी-अभी फाइंड्यूटिल्स का उपयोग किया है (MacPorts या Homebrew का उपयोग करें)।

फिर आपके पास जीएनयू का पता लगाना और अपडेट करना है।

अपडेटेड सुडो के बिना काम नहीं करेगा।

हालांकि मैं व्यक्तिगत रूप से प्रति उपयोगकर्ता स्थित होना पसंद करता हूं; यदि आप अन्य उपयोगकर्ताओं को sudo करते हैं तो आपको अपनी सभी फ़ाइलों के नाम / स्थान पता होंगे।

मेरे पास चलाने के लिए एक क्रॉन जॉब है:

updatedb --localpaths='/Users/grogs' --output='/Users/grogs/tmp/locatedb'

और मेरे .zshrc में .bashrc / .bashprofile:

export LOCATE_PATH="~/tmp/locatedb"


3
ओएस एक्स मावेरिक्स पर ब्रू-इंस्टॉल्ड मिलिटिल्स ने मुझे एक gupdatedbआदेश दिया , न कि updatedbएक। दुर्भाग्य से इस कमांड ने मुझे यहाँ वर्णित एक त्रुटि दी (जहाँ आपका एसओ उत्तर संदर्भित है)। अंतत: मैं एक वर्कअराउंड के रूप में उर्फ updatedbहो LC_ALL=’C’ sudo updatedbगया हूं, लेकिन मुझे नहीं पता कि यह दीर्घकालिक समाधान है या नहीं।
डेविड रिवर

2
/opt/local/libexec/gnubinअपने रास्ते की शुरुआत में जोड़ें , यदि आप चाहते हैं coreutilsऔर उनके मूल नामों के साथ उपलब्ध होने के findutilsद्वारा स्थापित किया macportsगया है (और उनके g-प्रमाणित संस्करण नहीं)।
Ioannis Filippidis

2

यदि आप डेटाबेस को पहली बार अपडेट किए बिना पता लगाते हैं, तो आपके पास इसके आउटपुट द्वारा ओएस के अनुशंसित तरीके को देखने का मौका है।

WARNING: The locate database (/var/db/locate.database) does not exist.
To create the database, run the following command:

  sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.locate.plist
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.