2013-04-08 8 views
6

पर दस्तावेज़ फ़ोल्डर के अंदर कुछ भी नहीं ढूंढ सकता है जैसा कि वर्णन में कहा गया है। मैं पहली बार जाँच हमारे डाटाबेस है अद्यतितपता लगाएँ आदेश में मैक

mh547:bin crashandburn4$ sudo /usr/libexec/locate.updatedb 
Password:  #password entered and function executed without errors 

मैं तो कोशिश करते हैं और किसी चीज़ की खोज के अंदर मेरी दस्तावेज़ फ़ोल्डर

mh547:bin crashandburn4$ cd ~/Documents/ 
mh547:Documents crashandburn4$ ls 
    Mamp_workspace/       Scenarios.docx       gc01/ 
mh547:Documents crashandburn4$ locate Scenarios.docx #nothing returned 

मैं फिर एक और यादृच्छिक फ़ोल्डर का प्रयास करें:

mh547:Documents crashandburn4$ cd .. 
mh547:~ crashandburn4$ ls 
    Applications/    Movies/      drawable/     untitled-2.pdf 
    Desktop/      Music/      drawable-xhdpi/    untitled-2.synctex.gz 
    Documents/     Pictures/     dwhelper/     untitled-2.tex 
    Downloads/     Public/      linux_ssh*     website-terminal-copy-paste 
    Dropbox/      Samsung/      scripts/      workspace/ 
    Google Drive/    Sites/      untitled-2.aux    workspace_copy_to_linux* 
    Library/      android-sdks/    untitled-2.log 
mh547:~ crashandburn4$ locate website-terminal-copy-paste 
/Users/crashandburn4/website-terminal-copy-paste #correct result returned 
कर सकते हैं

किसी को भी मेरी मदद करो? मैं इस पर आधे घंटे या उससे भी ज्यादा समय तक अटक गया हूं।

उत्तर

12

रूप plundra से कहा, क्योंकि साथ locate OSX जहाजों पुराना है और अपंग और सूचकांक नहीं है और/या फ़ाइलें जो nobody द्वारा पढ़ने योग्य नहीं हैं रिपोर्ट, तब भी जब रूट के रूप में चलने वाले है। हालांकि आप क्या कर सकते हैं या तो homebrew और फिर GNU locate इंस्टॉल करें, या जैसा कि heremdfind -name का उपयोग करें (मेरे पास इसका परीक्षण करने के लिए एक ओएसएक्स बॉक्स नहीं है)।

+0

आह बनाने के लिए इतना है कि क्यों, मैं homebrew के साथ अपडेट करते जाएंगे, मैं मैं mdfind से परिचित नहीं हूं, मैं गति कारणों के लिए पता लगाने का उपयोग कर रहा था, चल रहा है mdfind यह तेजी से लगता है अगर तेज़ नहीं है, मुझे नहीं लगता कि आप जानते हैं कि ऐसा क्यों है? –

+1

'mdfind' स्पॉटलाइट इंडेक्स का उपयोग करता है - एक पूर्वनिर्धारित डेटाबेस जो पता लगाने के समान है, सिवाय इसके कि इसमें नाम के अलावा कई फ़ाइल गुण शामिल हैं, और यह लगातार अपडेट किया गया है। अधिक जानकारी के लिए [एसयू पर यह ब्लॉग पोस्ट] देखें (http://blog.superuser.com/2011/06/03/digging-deeper-mastering-spotlight-in-os-x/)। –

+1

ब्लॉग टिप्पणी के अनुसार मैंने लिंक किया है 'mdfind' स्पॉटलाइट की अनुक्रमणिका का उपयोग करता है जिसे आमतौर पर अद्यतित रखा जाता है, इसलिए आपको मैन्युअल रूप से रीइंडेक्स की आवश्यकता नहीं है। इस प्रकार मैं वैकल्पिक 'पता' कार्यान्वयन के लिए homebrew _only_ स्थापित करने और 'mdfind' पर चिपकने और उपनाम ('ऊर्फ पता =' mdfind -name'') जोड़ने के लिए परेशान नहीं करता। गति के लिए, चूंकि दोनों एक इंडेक्सिंग डीबी का उपयोग करते हैं, इसलिए उन्हें समान तेज़ होना चाहिए - गति में मतभेद अलग-अलग डीबी आकारों, इंडेक्स प्रारूप, सॉर्टिंग एल्गोरिदम से फ्रंटेंड टूल में ऑप्टिमाइज़ेशन के लिए कई अलग-अलग कारण हो सकते हैं (या _appearance_ जो कि है दूसरे की तुलना में तेज़)। –

7

ऐसा इसलिए है क्योंकि आपके दस्तावेज़-फ़ोल्डर दुनिया को पठनीय नहीं है, जो विशेष रूप से साझा सिस्टम पर एक अच्छी बात है।

locate(1) मानव पेज के बग अनुभाग यह बताते हैं:

पता लगाने डेटाबेस आमतौर पर उपयोगकर्ता द्वारा बनाया गया है 'कोई नहीं' 'और locate.updatedb (8) उपयोगिता निर्देशिका कौन-सी नहीं छोड़ देता है उपयोगकर्ता '' कोई नहीं ', समूह' 'कोई नहीं', या दुनिया के लिए पठनीय । उदाहरण के लिए, यदि आपकी होम निर्देशिका दुनिया-पठनीय नहीं है, तो आपकी कोई भी फ़ाइल डेटाबेस में नहीं है।

ls -ld ~/Documents चलाने का प्रयास करें और आपको अनुमतियां दिखाई देगी। यदि आप इनसे अपरिचित हैं तो विकिपीडिया के पास Unix permissions पर एक लेख है।

1

आप क्या कर सकते हैं sudo ln -s /usr/libexec/locate.updatedb/usr/स्थानीय/bin/updatedb, updatedb आदेश उपलब्ध

+1

जबकि यह सच है, मुझे लगता है कि अगर आप मैक पर पता लगाने का उपयोग करना चाहते हैं, तो 'alias explore =' mdfind -name'' का उपयोग करना अधिक उपयोगी है, क्योंकि इनबिल्ट एमडीफ़िंड अच्छी तरह से काम करता है, और दो मेटाडेटा डेटाबेस रखने का कोई कारण नहीं है । –

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