Wie kommt es, dass der Unix-Befehl „locate“ immer noch Dateien/Ordner anzeigt, die nicht mehr vorhanden sind?

StackOverflow https://stackoverflow.com/questions/1060919

Frage

Ich habe kürzlich meinen gesamten lokalen Webentwicklungsbereich auf die Verwendung von MacPorts-Inhalten umgestellt, anstatt MAMP auf meinem Mac zu verwenden.Ich habe mich mit Python/Django beschäftigt und brauchte MAMP nicht mehr wirklich.

Die Sache ist die, ich habe MAMP aus dem Anwendungsordner deinstalliert, auch mit der Einstellungsdatei, aber wie kommt es, dass, wenn ich den Befehl „locate MAMP“ im Terminal ausführe, immer noch alle meine /Applications/MAMP/-Inhalte angezeigt werden, als ob alles noch da wäre? ?Und wenn ich 'cd' in /Applications/MAMP/ existiert es nicht?

Hat das etwas damit zu tun, dass „locate“ eine Art Indexsuchsystem ist und diese alten Dateipfade daher zwischengespeichert werden?Bitte erläutern Sie den Grund und wie Sie die Einträge sortieren können, damit sie nicht mehr angezeigt werden.

War es hilfreich?

Lösung

Sie haben die richtige Idee: locate verwendet eine Datenbank mit dem Namen ‚locatedb‘. Es wird normalerweise durch das System Cronjobs (nicht sicher, welche auf OS X) aktualisiert; Sie können ein Update mit dem updatedb Befehl erzwingen. Siehe http://linux-sxs.org/utilities/updatedb.html unter anderem .


Auch wenn Sie nicht finden Sie Dateien, die Sie erwarten, dass diese wichtige Einschränkung Abschnitt von der BUGS von OSX beachten,‘ orten (1) Mann-Seite:

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.

Andere Tipps

Die anderen Antworten bezüglich der Notwendigkeit, die Ortungsdatenbank zu aktualisieren, sind richtig.Ich habe diesen Alias, um meine Lokalisierungsdatenbank zu aktualisieren:

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

Seitdem ich es gefunden habe, nutze ich „locate“ eigentlich nicht mehr so ​​oft mdfind.Es verwendet den Spotlight-Dateiindex, den OSX im Vergleich zum „locatedb“ viel besser auf dem neuesten Stand halten kann.Es verfügt außerdem über deutlich mehr Möglichkeiten bei der Suche über die Befehlszeile.

Ja, die lokalisieren Befehl sucht über einen Index, deshalb ist es ziemlich schnell ist. Der Index wird von dem updatedb Befehl erzeugt, die in der Regel als nächtliches ausgeführt oder wöchentlich Job.

So aktualisieren Sie es manuell, führen Sie einfach updatedb .

Nach der Manpage, seine Datenbank einmal pro Woche aktualisiert wird:

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.

Werfen Sie einen Blick auf den Mann Seite finden

http://unixhelp.ed.ac.uk/CGI / Mann-cgi? orten + 1

Sie werden sehen, dass Durchsuchungen eine Datenbank finden, nicht Ihre tatsächlichen Dateisystem. Sie können diese Datenbank aktualisieren, indem Sie den Befehl updatedb.

Auch, weil es sich um eine Datenbank ist, wenn Sie es regelmäßig aktualisiere, suchen wouln't Dateien, die im Dateisystem sind die in der Datenbank sorglosen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top