Wenn ich den locate
Befehl auf einem Linux-Computer verwenden möchte, starte ich normalerweise sudo updatedb
zuerst, um die Datenbank zu aktualisieren. Ich kann den locate
Befehl unter OS X 10.5 ausführen, aber ich kann ihn nicht finden updatedb
. Was ist das entsprechende Update für den Mac?
234
locate
OS X arbeiten, werden Sie aufgefordert, das Programm auszuführensudo launchctl load -w /System/Library/LaunchDaemons/com.apple.locate.plist
.locate
, ist es möglicherweise bequemer, die Befehlszeilenschnittstelle von Spotlight zu verwenden,mdfind
da die Spotlight-Datenbank fast immer auf dem neuesten Stand ist und viel mehr Funktionen bietet als locate.man mdfind
Antworten:
Es ist
locate.updatedb
auf dem Mac.Weitere Informationen finden Sie in der Manpage locate.updatedb .
quelle
man
Seite heißt es auch: Sie wird normalerweise einmal pro Woche vom Job /System/Library/LaunchDaemons/com.apple.locate.plist ausgeführt. (Undman locate
erzählt eines über dieses Skript: /usr/libexec/locate.updatedb Skript zum Aktualisieren der Lokalisierungsdatenbank )sudo ionice -c3 updatedb
demupdatedb
Befehl, den I / O-Controller nett zu teilen (io nice), aber ich glaube nicht, dass dieser Befehl auf einem Mac verfügbar ist. Ich vermisse auch das-r
reguläre Ausdrucks-Flag, das mit GNU locate verwendet werden kann, obwohl ich nicht sicher bin, ob ich Homebrew verwenden und das von @GrogsThe 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
Sie können
sudo ln -s /usr/libexec/locate.updatedb /usr/local/bin/updatedb
denupdatedb
Befehl verfügbar machen.quelle
Ich persönlich habe gerade findutils installiert (benutze MacPorts oder Homebrew).
Dann musst du GNU lokalisieren und updaten.
updatedb funktioniert nicht ohne sudo.
Persönlich bevorzuge ich es jedoch, einen pro Benutzer zu haben; Wenn Sie Sudo andere Benutzer kennen die Namen / Speicherorte aller Ihrer Dateien.
Ich muss einen Cronjob ausführen:
updatedb --localpaths='/Users/grogs' --output='/Users/grogs/tmp/locatedb'
Und in meinem .zshrc .bashrc / .bashprofile:
export LOCATE_PATH="~/tmp/locatedb"
quelle
gupdatedb
Befehl, keinenupdatedb
. Leider gab mir dieser Befehl einen hier beschriebenen Fehler (auf den sich Ihre SO-Antwort bezieht). Letztendlich habe ichupdatedb
esLC_ALL=’C’ sudo updatedb
als Workaround verstanden, aber ich weiß nicht, ob dies eine langfristige Lösung ist./opt/local/libexec/gnubin
am Anfang Ihres Pfads hinzu, ob diecoreutils
undfindutils
installierten vonmacports
mit ihren ursprünglichen Namen (und nicht mit ihreng
vorab festgelegten Versionen) verfügbar sein sollen.Wenn Sie locate ausführen, ohne zuvor die Datenbank zu aktualisieren, haben Sie die Möglichkeit, den empfohlenen Weg des Betriebssystems anhand seiner Ausgabe zu ermitteln.
quelle