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

Eigenschaftlocatefind
GeschwindigkeitSehr schnellLangsamer
AktualitätNur so aktuell wie die DatenbankImmer aktuell
SuchkriterienNur DateinamenName, Größe, Datum, Berechtigungen, …
VorbereitungBenötigt updatedbKeine

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