2009-06-29 7 views
8

Ich habe vor kurzem meinen gesamten lokalen Webentwicklungsbereich auf MacPorts umgestellt, anstatt MAMP auf meinem Mac zu verwenden. Ich bin auf Python/Django gestoßen und brauchte MAMP nicht mehr.Wie kommt es, dass der Befehl unix locate immer noch Dateien/Ordner anzeigt, die nicht mehr vorhanden sind?

Die Sache ist, ich habe MAMP aus dem Ordner Programme mit der Voreinstellung Datei zu deinstallieren, aber wie kommt, wenn ich den 'locate MAMP' Befehl im Terminal ausführen zeigt es immer noch meine/Anwendungen/MAMP/Zeug als ob es ist alles noch da? Und wenn ich 'cd' in/Anwendungen/MAMP/es existiert nicht?

Etwas mit Locate als eine Art Index-Suchsystem zu tun, daher Dinge, die diese alten Dateipfade zwischengespeichert werden? Bitte erklären Sie, warum und wie Sie es sortieren, damit es nicht mehr angezeigt wird.

Antwort

8

Sie haben die richtige Idee: locate verwendet eine Datenbank namens 'locatedb'. Es wird normalerweise von System Cron-Jobs aktualisiert (nicht sicher, welche auf OS X); Sie können ein Update mit dem Befehl updatedb erzwingen. Siehe http://linux-sxs.org/utilities/updatedb.html unter anderen.


Auch wenn Sie keine Dateien finden, die Sie erwarten, beachten Sie diese wichtige Einschränkung vom BUGS Abschnitt von OSX‘locate(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.

+0

Aus demselben Grund zeigt locate die zuletzt erstellten Dateien nicht an - alle Dateien, die seit der letzten Aktualisierung erstellt wurden, werden von locate nicht gesehen. –

+0

Auf OSX 10.10, das System Cron, das die Datenbank aktualisiert, ist '/ System/Library/LaunchDaemons/com.apple.locate.plist' –

+0

Auch, wenn Sie nicht * Dateien finden, die Sie erwarten, beachten Sie diesen wichtigen Vorbehalt von den BUGS Abschnitt von OSX '[locate (1)] (http://developer.apple.com/library/mac/#documentation/Darwin/Reference/ManPages/man1/locate.1.html) man-page: 'Die locate-Datenbank wird normalerweise vom Benutzer '' nobody '' erstellt und das Dienstprogramm locate.updatedb (8) überspringt Verzeichnisse, die nicht lesbar sind für Benutzer '' niemand '', Gruppe '' niemand '' oder Welt. Wenn zum Beispiel Ihr HOME-Verzeichnis nicht für alle lesbar ist, befindet sich keine Ihrer Dateien in der Datenbank. –

0

der Tat die suchen Befehl sucht durch einen Index, deshalb ist es ziemlich schnell. Der Index wird durch den Befehl updatedb generiert, der normalerweise als nächtlicher oder wöchentlicher Job ausgeführt wird.

Um es manuell zu aktualisieren, führen Sie einfach updatedb.

0

Nach der man-Seite wird die Datenbank einmal pro Woche aktualisiert:

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

Schauen Sie sich auf der Seite Mann lokalisieren

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

Sie werden feststellen, dass eine Suche lokalisieren sehen Datenbank, nicht Ihr tatsächliches Dateisystem. Sie können diese Datenbank mit dem Befehl updatedb aktualisieren.

Da es sich um eine Datenbank handelt, sollten Sie, sofern Sie sie nicht regelmäßig aktualisieren, keine Dateien in Ihrem Dateisystem finden, die sich nicht in der Datenbank befinden.

6

Die anderen Antworten stimmen dahingehend, dass die locate-Datenbank aktualisiert werden muss. Ich habe diesen Alias ​​bekam zu meinem lokalisieren DB zu aktualisieren:

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

ich eigentlich nicht allzu viel nutzen orten mehr jetzt, dass ich mdfind gefunden habe. Es verwendet den Spotlight-Datei-Index, mit dem OSX im Vergleich zum locatedb viel besser auf dem neuesten Stand ist. Es hat auch ein bisschen mehr Macht in was es von der Kommandozeile aus suchen kann.

+0

Dies dauert ewig .... –