सवाल मैक के लिए लिनक्स के अद्यतित कमांड के बराबर क्या है?


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


219
2018-02-16 15:23


मूल


अच्छी तरह से upbb और पता अच्छी चीजें हैं, लेकिन उन्हें नियमित रूप से अद्यतन करने की आवश्यकता होती है (या तो अद्यतन बी नियमित रूप से चलता है और यह आपके सिस्टम को असुविधाजनक समय पर धीमा कर देता है, या फाइलों के संदर्भ दिखाता है जो अब और नहीं हैं)। तो मुझे लगता है कि पता लगाने / अद्यतन करने की बजाय यह संभवतः (कहीं अधिक शक्तिशाली) खोजने के लिए बेहतर होगा। - amo-ej1
जबकि कई चीजों के लिए खोज उपयोगी है, इसे हर बार फाइल सिस्टम से गुजरना पड़ता है। यदि आप उन स्थानों को सीमित कर सकते हैं जहां आप देख रहे हैं, तो यह ठीक है। पता लगाने का लाभ यह है कि अपना खुद का डेटाबेस रखता है, और इसलिए हर बार खोजने की आवश्यकता नहीं है। यह बड़े और / या दूरस्थ फाइल सिस्टम के साथ विशेष रूप से महत्वपूर्ण है। मुझे लगता है कि प्रत्येक के पास इसकी जगह है। - KeithB
जब पहली बार चल रहा है locate एक ओएस एक्स बॉक्स पर यह आपको चलाने के लिए कहता है sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.locate.plist। - Török Gábor
आपको जो उपयोग करने की आवश्यकता है उसके आधार पर locate के लिए, आपको स्पॉटलाइट को कमांड लाइन इंटरफ़ेस का उपयोग करने के लिए और अधिक सुविधाजनक लग सकता है, mdfind, चूंकि स्पॉटलाइट डेटाबेस लगभग हमेशा अद्यतित है, और पता लगाने से बहुत अधिक कार्यक्षमता प्रदान करता है। man mdfind - Paul R


जवाब:


आईटी इस locate.updatedb मैक पर

sudo /usr/libexec/locate.updatedb

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


308
2018-02-16 15:27



उस man पेज भी दावा करता है: यह आमतौर पर सप्ताह में एक बार / सिस्टम / पुस्तकालय / LaunchDaemons/com.apple.locate.plist नौकरी द्वारा चलाया जाता है। (तथा man locate उस स्क्रिप्ट के बारे में बताता है: पता डेटाबेस को अद्यतन करने के लिए /usr/libexec/locate.updatedb स्क्रिप्ट) - Arjan
@ अरजन: इसे सप्ताह में एक बार चलाया जाना चाहिए, लेकिन डिफ़ॉल्ट यह अक्षम है और जब यह किया जाना चाहिए रविवार को 3:00 (या कुछ समान) है, जो वास्तव में उपयोगी नहीं है :) - Studer
लिनक्स पर मैं आमतौर पर चलाता हूं sudo ionice -c3 updatedb जो बताता है updatedb i / o नियंत्रक को अच्छी तरह से साझा करने के लिए (io अच्छा) लेकिन मुझे नहीं लगता कि यह आदेश मैक पर उपलब्ध है। मुझे भी याद आ रही है -r नियमित अभिव्यक्ति ध्वज जिसका उपयोग जीएनयू के साथ किया जा सकता है, हालांकि मुझे यकीन नहीं है कि मैं होमब्रू का उपयोग करना चाहता हूं और @Grogs द्वारा उल्लिखित जीएनयू पता स्थापित करना चाहता हूं - cwd
स्पॉटलाइट ("-i" पाठ्यक्रम का वैकल्पिक) का उपयोग करने वाले "पता (-r)" और "अपडेटेडबी" का मैकोक्स विकल्प उदाहरण: mdfind -name "mp4" | egrep -i "^ / उपयोगकर्ता। * डाउनलोड / .* सामग्री" - michael
इसके अलावा, अगर आप नहीं उन फ़ाइलों को ढूंढें जिन्हें आप उम्मीद करते हैं, इस प्रासंगिक चेतावनी को 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 - Ashutosh Jindal


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


81
2017-10-18 22:29



हे, मैंने अभी इसे एक टिप्पणी के रूप में पोस्ट किया .. फिर देखा कि आपने यह कहा है। मुझे लगता है कि यह बनाने के लिए एक अच्छा छोटा mod है। :) - James T Snell
या यह आपके .bash_profile में उपनाम - Jim Johnson


व्यक्तिगत रूप से, मैंने अभी findutils इंस्टॉल किया है (मैकपॉर्ट्स या होमब्रू का उपयोग करें)।

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

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

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

मेरे पास दौड़ने के लिए एक क्रॉन नौकरी है:

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

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

export LOCATE_PATH="~/tmp/locatedb"


19
2017-12-04 02:27



ओएस एक्स मैवरिक्स पर ब्रू-इंस्टॉलेशन निष्कर्ष ने मुझे एक दिया gupdatedb आदेश, नहीं updatedb एक। दुर्भाग्य से इस आदेश ने मुझे दिया यहां वर्णित एक त्रुटि (जहां आपका एसओ जवाब संदर्भित है)। आखिरकार मैंने अलियाज़ किया है updatedb सेवा मेरे LC_ALL=’C’ sudo updatedb एक कामकाज के रूप में, लेकिन मुझे नहीं पता कि यह एक दीर्घकालिक समाधान है या नहीं। - David Rivers
जोड़ना /opt/local/libexec/gnubin अगर आप चाहते हैं तो अपने रास्ते की शुरुआत में coreutils तथा findutils द्वारा स्थापित macports उनके मूल नामों के साथ उपलब्ध होना (और उनके नहीं g-prefixed संस्करण)। - Ioannis Filippidis


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

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

2
2017-08-15 09:09