BlogBlog ÜbersichtjailscriptportsoptFreeBSDLinksThermoskanne

Dateien schneller finden

Sucht man eine Datei auf der Festplatte, so kann man zum Beispiel find(1) dazu benutzen:

# find / -name "*<Teil des Names der gesuchten Datei>*"

Da dabei jedes mal die ganze Festplatte durchsucht wird, ist dies nicht der effektivste Weg, wenn man mehrere Dateien sucht. Dafür gibt es locate(1). Vor dem ersten Gebrauch von locate muss eine Datenbank erstellt werden, auf die locate später zurückgreift:

# /usr/libexec/locate.updatedb
>>> WARNING
>>> Executing updatedb as root. This WILL reveal all filenames
>>> on your machine to all login users, which is a security risk.

Erstellt man die Datenbank als root-Benutzer, so können alle Benutzer des Systems den Inhalt von Verzeichnissen herausfinden, von denen sie normalerweise nicht die Berechtigungen haben. Dies kann auf Mehrbernutzersystemen ein Problem sein. Dort sollte die Datenbank als unprevilegierter Benutzer erstellt werden:

# su -m nobody -c /usr/libexec/locate.updatedb

Ist die Datenbank erstellt, so kann sie mit locate durchsucht werden, wenn man eine Datei sucht:

# locate <Teil des Names der gesuchten Datei>

Möchte man, dass die Gross-/Kleinschreibung ignoriert wird, so kann man zusätzlich die -i Option verwenden.

Die locate-Datenbank wird wöchentlich automatisch auf FreeBSD durch das periodic weekly Skript /etc/periodic/weekly/310.locate und auf OpenBSD durch /etc/weekly aktualisiert.

Comments (2)  Permalink