Ich versuche, alle Kopien von example.filename
auf meinem FreeBSD-Server zu finden. Was ist der beste / einfachste / effizienteste Weg, dies zu tun?
Ich versuche, alle Kopien von example.filename
auf meinem FreeBSD-Server zu finden. Was ist der beste / einfachste / effizienteste Weg, dies zu tun?
Antworten:
find / -name example.filename
locate filename
Viel schneller als find
, wenn Sie den updatedb
Suchdienst ausführen und nur Dateien finden, die zum Zeitpunkt der letzten Ausführung vorhanden waren (normalerweise in der Nacht zuvor unter der Kontrolle eines Cron-Jobs).
Sie könnenupdatedb
von Hand laufen , aber das ist noch langsamer als der find
Cletus vorschlägt und erfordert root. Manchmal aktualisiere ich die Datenbank von Hand, nachdem ich ein paar neue Sachen installiert habe.
find /
mehr als einmal in der Woche einen großen Baum locate
bearbeiten, lohnt es sich wahrscheinlich, den Dienst auszuführen, da er locate(1)
so viel schneller ist.
sudo periodic weekly
aktualisiert die locate
Datenbank. Führen Sie das nach jeder Installation oder jedem Download aus, die die gewünschten Dateien enthalten.
Wenn Sie locate (aka slocate) installiert haben, dann
locate example.filename
locate führt jede Nacht einen Cron-Job aus, der alle Dateien auf Ihrem Computer neu indiziert. Aus diesem Grund ist es nicht immer auf dem neuesten Stand.
Manchmal möchten Sie Dateien auf einer bestimmten Verzeichnisebene finden. In diesem Fall kann es praktisch sein, Shell-Platzhalter zu verwenden:
ls /data/*/example.filename
Dies funktioniert natürlich nur, wenn Sie eine starre Verzeichnisstruktur haben.
locate
Wie bereits erwähnt, locate
ist dies der schnelle Weg, um eine Datei zu finden. Dieser Befehl verwendet einen vorkompilierten Index der Datei- und Ordnernamen. Diese Datenbank mit Namen wird durchsucht, anstatt durch Ihr Dateisystem zu crawlen.
locate example.filename
Um zwischen Groß- und Kleinschreibung zu unterscheiden, fügen Sie hinzu -i
.
locate -i eXAmPle.FileName
locate
Datenbank aktualisierenDie von verwendete Datenbank locate
muss auf dem neuesten Stand sein. Nach einer Installation oder einem Download, der möglicherweise die gewünschte Datei enthält, müssen Sie die locate
Datenbank aktualisieren .
Die locate
Datenbank wird irgendwann automatisch von Ihrem FreeBSD-System aktualisiert. Es gibt eine wöchentliche Reihe von Aufgaben, die diese Aufgabe umfasst. Diese Aufgaben werden im /etc/periodic/weekly/310.locate
Skript aufgelistet .
Die einfachste und sicherste Möglichkeit, eine frühzeitige Aktualisierung der locate
Datenbank zu erzwingen, besteht darin, die wöchentlichen Aufgaben sofort auszuführen.
sudo periodic weekly
Oder Sie könnten sogar alle regulären Aufgaben erzwingen. Möglicherweise möchten Sie dies sofort nach dem Einrichten eines neuen FreeBSD-Systems tun.
sudo periodic daily weekly monthly
Wenn locate
Sie die Datenbank auf andere Weise aktualisieren , erhalten Sie möglicherweise eine Meldung, dass Sie unsicher sind und die Namen aller Dateien Ihres Systems jedem Benutzer auf dem FreeBSD-System mitteilen. Die Verwendung der periodic
Route vermeidet dieses Problem.
Wenn Sie die Datenbank lokalisieren aktuell haben, dann nur:
locate example.filename
Mache ich manchmal
find . | grep example.filename
wahrscheinlich jedoch enorm ineffizient.