Ich versuche, alle Kopien von example.filenameauf meinem FreeBSD-Server zu finden. Was ist der beste / einfachste / effizienteste Weg, dies zu tun?
Ich versuche, alle Kopien von example.filenameauf 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 updatedbSuchdienst 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 findCletus 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 locatebearbeiten, lohnt es sich wahrscheinlich, den Dienst auszuführen, da er locate(1)so viel schneller ist.
sudo periodic weeklyaktualisiert die locateDatenbank. 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.
locateWie bereits erwähnt, locateist 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
locateDatenbank aktualisierenDie von verwendete Datenbank locatemuss auf dem neuesten Stand sein. Nach einer Installation oder einem Download, der möglicherweise die gewünschte Datei enthält, müssen Sie die locateDatenbank aktualisieren .
Die locateDatenbank 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.locateSkript aufgelistet .
Die einfachste und sicherste Möglichkeit, eine frühzeitige Aktualisierung der locateDatenbank 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 locateSie 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 periodicRoute 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.