2013-04-08 36 views
6

Jak to podano w opisie. I najpierw sprawdzić nasza baza danych jest aktualnaPolecenie Locate nie może znaleźć niczego w folderze Dokumenty na komputerze Mac

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

I wtedy próbować szukać czegoś wewnątrz folderu Moje dokumenty

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

I spróbuj inną losową folder:

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 

może ktoś Pomóż mi? Utknąłem na tym przez dobre pół godziny.

Odpowiedz

12

Jak zauważyła gra plundra, to dlatego, że dostarczony przez OSX locate jest stary i okaleczony i nie indeksuje ani nie raportuje plików, które nie są odczytywane przez nobody, nawet jeśli działają jako root. Możesz jednak zainstalować: homebrew, a następnie GNU locate lub, zgodnie z sugestią, here zamiast tego używaj mdfind -name (nie mam pod ręką skrzynki OSX, aby to przetestować).

+0

ahh, więc dlatego będę aktualizować z homebrew, ja "Nie jestem zaznajomiony z mdfind, używałem lokalizowania ze względu na szybkość, po uruchomieniu mdfind wydaje mi się, że tak szybko, jeśli nie szybciej, nie przypuszczam, że wiesz, dlaczego tak jest? –

+1

'mdfind' używa indeksu Spotlight - wstępnie zbudowanej bazy danych podobnej do zlokalizowanej, z tym wyjątkiem, że zawiera wiele właściwości plików oprócz nazwy i jest aktualizowany w sposób ciągły. Więcej informacji można znaleźć w [tym poście na blogu] (http://blog.superuser.com/2011/06/03/digging-deeper-mastering-spotlight-in-os-x/). –

+1

Zgodnie z komentarzem na blogu połączyłem 'mdfind' przy użyciu indeksu Spotlight, który jest zwykle aktualizowany, więc nie trzeba ręcznie reindeksować. Tak więc nie zawracałbym sobie głowy instalowaniem homebrew _only_ dla alternatywnej implementacji 'locate' i trzymania się' mdfind' oraz dodawania aliasu ('alias locate = 'mdfind -name''). Jeśli chodzi o szybkość, ponieważ oba używają indeksowania db, powinny one być równie szybkie - różnice w szybkości mogą mieć wiele różnych powodów, od różnych rozmiarów db, formatu indeksu, algorytmu sortowania do optymalizacji w narzędziu frontendowym (lub po _appearance_, który jest szybciej niż inne). –

7

To dlatego, że twój folder Dokumenty nie jest czytelny dla świata, co jest dobre, szczególnie w systemach współdzielonych.

Sekcja BŁĘDY człowieka-stronie locate(1) wyjaśnia:

zlokalizować bazy danych jest zwykle zbudowany przez użytkownika „” nikt „” i locate.updatedb (8) Narzędzie pomija katalogi, które nie są czytelny dla użytkownika "nikt", grupa "" nikt "lub świat. Na przykład, jeśli twój katalog DOM nie jest czytelny dla świata, żaden z twoich plików nie znajduje się w bazie danych .

Spróbuj uruchomić ls -ld ~/Documents, a zobaczysz uprawnienia. W Wikipedii znajduje się artykuł na temat Unix permissions, jeśli nie znasz tych słów.

1

Można zrobić sudo ln -s /usr/libexec/locate.updatedb/usr/local/bin/updatedb aby polecenie updatedb dostępny

+1

a to prawda, myślę, że bardziej użyteczne jest użycie 'alias locate = 'mdfind -name'', jeśli chcesz użyć lokalizacji na macu, ponieważ wbudowany mdfind działa dobrze i nie ma powodu, aby przechowywać dwie bazy danych metadanych . –