2009-06-29 13 views
8

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

बात यह है कि, मैंने प्राथमिकता फ़ाइल के साथ एप्लिकेशन फ़ोल्डर से एमएएमपी को अनइंस्टॉल किया है, लेकिन टर्मिनल में 'एमएएमपी' कमांड चलाने के दौरान मैं कैसे आता हूं, यह अभी भी मेरे सभी/एप्लीकेशन/एमएएमपी/सामान जैसे दिखाता है यह सब अभी भी वहाँ है? और जब मैं 'cd' में/एप्लीकेशन/एमएएमपी/यह अस्तित्व में नहीं है?

इंडेक्स खोज प्रणाली का एक प्रकार होने का पता लगाने के साथ कुछ करने के लिए, इसलिए इन पुराने फाइलपैथ को कैश किया जाता है? कृपया बताएं कि क्यों, और इसे कैसे क्रमबद्ध करें ताकि वे अब और न दिखाएं।

उत्तर

8

आपको सही विचार है: locate 'locatedb' नामक डेटाबेस का उपयोग करता है। यह आमतौर पर सिस्टम क्रॉन नौकरियों द्वारा अपडेट किया जाता है (सुनिश्चित नहीं है कि ओएस एक्स पर कौन सा है); आप updatedb कमांड के साथ एक अद्यतन को मजबूर कर सकते हैं। दूसरों के बीच http://linux-sxs.org/utilities/updatedb.html देखें।


इसके अलावा, फ़ाइलें जो आप, OSX 'locate(1) मानव पेज के बग अनुभाग से इस महत्वपूर्ण चेतावनी ध्यान दें करने की उम्मीद नहीं मिल रहा यदि आप करते :

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.

+0

इसी कारण से, पता लगाने के लिए हाल ही में बनाई गई फ़ाइलों को दिखाने में विफल रहता है - आखिरी अपडेटेडब के बाद से बनाई गई किसी भी फाइल को ढूंढकर नहीं देखा जाता है। ओएसएक्स 10 पर –

+0

।10, सिस्टम क्रॉन जो डीबी को अद्यतन करता है वह है/सिस्टम/लाइब्रेरी/लॉन्चडेमन्स/com.apple.locate.plist' –

+0

इसके अलावा, यदि आप * उन फ़ाइलों को नहीं ढूंढते जिन्हें आप उम्मीद करते हैं, तो BUGS से इस महत्वपूर्ण चेतावनी को नोट करें ओएसएक्स का अनुभाग '[पता लगाएँ (1)] (http://developer.apple.com/library/mac/#documentation/Darwin/Reference/ManPages/man1/locate.1.html) मैन-पेज:' पता डेटाबेस आमतौर पर उपयोगकर्ता '' none '' और explore.updatedb (8) उपयोगिता स्किप निर्देशिकाओं द्वारा बनाई गई है जो उपयोगकर्ता '' none '', समूह '' none '' या दुनिया के लिए पठनीय नहीं हैं। उदाहरण के लिए, यदि आपकी होम निर्देशिका दुनिया-पठनीय नहीं है, तो आपकी कोई भी फ़ाइल डेटाबेस में नहीं है। –

0

दरअसल एक सूचकांक के माध्यम से कमांड खोजों का पता लगाएं, यही कारण है कि यह बहुत तेज़ है। सूचकांक अद्यतन बी कमांड द्वारा उत्पन्न किया गया है, जो आमतौर पर रात या साप्ताहिक नौकरी के रूप में चलाया जाता है।

तो इसे मैन्युअल रूप से अपडेट करने के लिए, बस अद्यतनb चलाएं।

0

आदमी पृष्ठ के अनुसार, अपने डेटाबेस सप्ताह में एक बार अद्यतन किया जाता है:

NAME 
    locate.updatedb -- update locate database 

SYNOPSIS 
    /usr/libexec/locate.updatedb 

DESCRIPTION 
    The locate.updatedb utility updates the database used by locate(1). It is typically run once a week by 
    the /etc/periodic/weekly/310.locate script. 
0

पता लगाने आदमी पेज पर एक नजर डालें

http://unixhelp.ed.ac.uk/CGI/man-cgi?locate+1

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

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

6

अन्य उत्तरों पता डेटाबेस को अद्यतन करने की आवश्यकता के बारे में सही हैं। मैं अपने पता लगाने डीबी अद्यतन करने के लिए इस उर्फ ​​मिल गया है:

alias update_locate='sudo /usr/libexec/locate.updatedb' 

मैं वास्तव में अब और है कि सभी ज्यादा का पता लगाने अब है कि मैं mdfind पाया है प्रयोग नहीं करते। यह स्पॉटलाइट फ़ाइल इंडेक्स का उपयोग करता है जो ओएसएक्स स्थितबी की तुलना में अद्यतित रखने में काफी बेहतर है। कमांड लाइन से यह क्या खोज सकता है इसमें इसकी कुछ और शक्ति भी है।

+0

यह हमेशा के लिए लेता है .... –

संबंधित मुद्दे