Der locate-Befehl findet Dateien anhand ihres Namens - und zwar blitzschnell. Während find das komplette Dateisystem durchsucht, greift locate auf eine vorindizierte Datenbank zu. Das macht ihn um ein Vielfaches schneller.
Syntax
locate [OPTIONEN] MUSTER...
OPTIONEN- Flags, die das Suchverhalten steuern.MUSTER- Der Dateiname oder ein Teil davon.
locate installieren
Je nach Distribution ist locate bereits vorinstalliert. Teste es mit:
locate --version
Falls du die Meldung “command not found” erhältst, installiere das Paket mlocate.
Auf Ubuntu und Debian:
sudo apt update
sudo apt install mlocate
Auf CentOS, Fedora und RHEL:
sudo yum install mlocate
Wie locate funktioniert
locate durchsucht nicht das Dateisystem direkt, sondern eine Datenbank. Diese Datenbank wird mit dem Befehl updatedb erstellt und aktualisiert.
Nach der Installation von mlocate richtet das System automatisch einen Cronjob ein, der updatedb einmal täglich ausführt. Die Konfiguration findest du in /etc/cron.daily/mlocate.
Du kannst die Datenbank jederzeit manuell aktualisieren:
sudo updatedb
Der Vorgang dauert je nach Anzahl der Dateien einige Sekunden bis Minuten.
Wichtig: Dateien, die nach dem letzten updatedb erstellt wurden, tauchen in den Suchergebnissen nicht auf.
Praktische Beispiele
Einfache Suche
Suche nach allen Dateien, die .bashrc im Namen enthalten:
locate .bashrc
Die Ausgabe zeigt alle Treffer, für die du Leserechte hast - einen pro Zeile.
Suchergebnisse begrenzen
Bei vielen Treffern kannst du die Ausgabe mit -n begrenzen:
locate -n 10 *.conf
Dieser Befehl zeigt maximal 10 Konfigurationsdateien an.
Groß- und Kleinschreibung ignorieren
Standardmäßig unterscheidet locate zwischen Groß- und Kleinschreibung. Mit -i hebst du das auf:
locate -i readme.md
Findet README.md, readme.MD, Readme.md und alle anderen Schreibweisen.
Nur existierende Dateien anzeigen
Die Datenbank kann veraltete Einträge enthalten - Dateien, die inzwischen gelöscht wurden. Mit -e zeigt locate nur Dateien an, die tatsächlich noch existieren:
locate -e *.log
Anzahl der Treffer zählen
Statt der Dateinamen kannst du dir die Anzahl der Treffer ausgeben lassen:
locate -c .py
Suche mit regulären Ausdrücken
Für komplexere Suchmuster verwende die Option --regex:
locate --regex -i "(\.mp4|\.avi|\.mkv)"
Dieser Befehl findet alle Videodateien mit den Endungen .mp4, .avi oder .mkv.
Lange Listen durchblättern
Bei vielen Treffern leitest du die Ausgabe an less weiter:
locate *.jpg | less
locate vs. find
| Eigenschaft | locate | find |
|---|---|---|
| Geschwindigkeit | Sehr schnell | Langsamer |
| Aktualität | Nur so aktuell wie die Datenbank | Immer aktuell |
| Suchkriterien | Nur Dateinamen | Name, Größe, Datum, Berechtigungen, … |
| Vorbereitung | Benötigt updatedb | Keine |
Verwende locate, wenn du schnell eine Datei nach Namen finden willst. Greife zu find, wenn du nach anderen Kriterien suchen musst oder garantiert aktuelle Ergebnisse brauchst.
Zusammenfassung
locate ist das schnellste Werkzeug, um Dateien nach Namen zu finden. Es durchsucht eine vorindizierte Datenbank statt des Dateisystems. Die Datenbank wird täglich automatisch aktualisiert - oder manuell mit sudo updatedb.
Weitere Optionen findest du in der Manpage:
man locate