locate & updatedb - nie znaleziono plików

8

Pobiegłem

sudo /usr/libexec/locate.updatedb

następnie

locate Radium3

ale nic nie zwraca!

ale

$ ls ~/Library/Containers/com.catpigstudios.Radium3/
Container.plist Data

Dlaczego więc nie locatewidzi wszystkich plików?

Czy poprawnie używam tego polecenia w systemie OS X?

davidhq
źródło

Odpowiedzi:

5

Próbować:

sudo /usr/libexec/locate.updatedb

I spójrz config:

/etc/locate.rc plik konfiguracyjny

Edytowane:

Opublikuj tutaj wynik:

echo $LOCATE_CONFIG

I:

cat /etc/locate.rc

I:

echo $0

Aktualizacja:

https://developer.apple.com/library/mac/documentation/Darwin/Reference/Manpages/man1/locate.1.html#//apple_ref/doc/man/1/locate

Program lokalizujący przeszukuje bazę danych w poszukiwaniu wszystkich ścieżek pasujących do określonego wzorca. Baza danych bazy danych jest obliczana okresowo (zwykle co tydzień lub codziennie) i zawiera ścieżki wszystkich plików, które są publicznie dostępne .

Spróbuj mdfind zamiast zlokalizować

Zaktualizowano2:

tekst mdfind, który jest dokładniejszy. Tylko tekst mdfind daje pliki, które również zawierają tekst. - David Krmpotic

mdfind -name text
użytkownik3439968
źródło
Nie mam komentarza #SEARCHPATHS="/"w konfiguracji, to nie pomogło. -vopcja nie wydaje żadnych dodatkowych wyników: /
davidhq
Podaj mi dodatkowe informacje, proszę. W odpowiedzi sekcja „Edytowane”.
user3439968,
1
$ ls -la /var/db/locate.database -r - r - r-- 1 koło nikogo 19463861 6 kwietnia 20:08 /var/db/locate.database $ locate david.jpg / Users / david / temp /david.jpg
davidhq
1
powinieneś zaktualizować swoją odpowiedź, mdfind -name textktóra jest bardziej dokładna. Tylko mdfind textdaje pliki, które zawierają tekst, jak również.
davidhq
3

Winowajcą mogą być uprawnienia, ponieważ lokalizator najwyraźniej nie może odczytać plików, które nie są czytelne na całym świecie. Zobacz tę odpowiedź za Plundra więcej wyjaśnień.

Findutils pakiet z homebrew nie pozwalają gupdatedbi glocatepolecenia, które wydają się rozwiązać niektóre z ograniczeń z narzędzi wbudowanych.

VogonPoetLaureate
źródło
Dziękuję Ci! ale teraz, kiedy wiem, mdutilczy warto to sprawdzić? Jednym z przypadków, o których mogę pomyśleć, jest to, że mogę ręcznie uruchomić ponowne skanowanie gupdatedb- za pomocą Spotlight nie jest to takie proste lub potrwa dłużej (indeksuje także zawartość plików). Czy są inne zalety?
davidhq
1
Ponowne indeksowanie za pomocą mdutil / spotlight może zająć trochę czasu. updatedbjest do tego szybszy. glocatewydaje się nie mieć problemu z indeksowaniem plików systemowych, podczas gdy ja mdfindignoruję ~ / Library i inne pliki systemowe. Zdecydowanie mogę znaleźć więcej trafień z glocateciągu mdfindw większości przypadków. YMMV.
VogonPoetLaureate
ok, testuję to teraz. Wydaje mi się, że znalazłem jakiś problem ... sudo gupdatedbnajpierw uruchomiłem , a następnie zapisałem glocate Radiumwynik. Potem pobiegłem gupdatedbi powiedział:, /.Trashes: Permission deniedto samo dla niektórych innych folderów. Porównałem dane wyjściowe dla obu i było tak samo! Dziwne ...
davidhq,
Z tego, co mówisz, najpierw uruchomiłeś sudo gupdatedb(uruchamiając go jako root), a następnie działałeś gupdatedbjako normalny użytkownik, który nie miałby dostępu do plików, do których użytkownik root miałby dostęp, co oznacza, że ​​dostaniesz błędy odmowy uprawnień. Jeśli chcesz mieć kompletną bazę nazw plików dla całego systemu, kontynuuj ją jako root. To ujawnia twoje pliki innym użytkownikom w systemie, którzy mogą użyć tego glocatepolecenia. Ale jeśli jesteś jedynym użytkownikiem, powinno być dobrze.
VogonPoetLaureate
2

Jeśli chcesz przeszukać tę samą bazę danych, z której korzysta Spotlight, możesz użyć mdfindpolecenia jako alternatywy (choć nie dokładnej zamiany) dla locate:

mdfind Radius3
szczerze
źródło