Wie zeigt der Befehl unix locate immer noch Dateien / Ordner an, die nicht mehr da sind?

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.

Sache ist, ich habe MAMP aus dem Programmordner mit der Voreinstellungsdatei auch entfernt, aber wie kommt es, wenn ich den 'locate MAMP' Befehl im Terminal ausführen, zeigt es immer noch alle meine / Anwendungen / MAMP / Zeug, als ob es ist alle noch da? Und wenn ich ' cd ' in / Applications / MAMP / es existiert nicht?

Irgendetwas mit locate zu tun, das eine Art Index-Suchsystem ist, daher werden diese alten Dateipfade zwischengespeichert? Bitte erklären Sie, warum und wie Sie es sortieren, so dass sie nicht mehr zeigen.

    
littlejim84 29.06.2009, 22:35
quelle

5 Antworten

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 eine Aktualisierung mit dem Befehl updatedb erzwingen. Siehe Ссылка unter anderen.

Wenn Sie nicht Dateien finden, die Sie erwarten, notieren Sie sich diese wichtige Einschränkung im BUGS-Abschnitt von OSX locate (1) man-page:

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.

    
Val 29.06.2009, 22:40
quelle
6

Die anderen Antworten stimmen dahingehend, dass die locate-Datenbank aktualisiert werden muss. Ich habe diesen Alias, um meine Ortungsdatenbank zu aktualisieren:

%Vor%

Ich benutze tatsächlich nicht mehr so ​​viel, jetzt wo ich MDFIND . 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.

    
Ted Naleid 30.06.2009 03:19
quelle
0

Tatsächlich durchsucht der Befehl locate einen Index, weshalb er ziemlich schnell ist. Der Index wird durch den Befehl updatedb generiert, der normalerweise nachts ausgeführt wird oder wöchentlicher Job.

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

    
Lars Haugseth 29.06.2009 22:41
quelle
0

Laut der man-Seite wird seine Datenbank einmal pro Woche aktualisiert:

%Vor%     
Jim Puls 29.06.2009 22:42
quelle
0

Sehen Sie sich die Seite zum Lokalisieren von Benutzern an

Ссылка

Sie werden sehen, dass locate eine Datenbank durchsucht, 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.

    
James Caccese 29.06.2009 22:43
quelle

Tags und Links