Linux / Befehl locate: Indizierte Dateipfade schnell durchsuchen

Der Befehl locate durchsucht eine vorgefertigte Datenbank von Dateipfaden. Er ist viel schneller als das Durchsuchen des Dateisystems bei jeder Abfrage, aber kürzlich erstellte, verschobene oder gelöschte Dateien werden möglicherweise nicht angezeigt, bis die Datenbank aktualisiert wird.

Ergänzende Befehle und Anwendungsfälle finden Sie in Essenzielle Linux-Befehle: Ein praktisches Nachschlagewerk nach Aufgabe.

Was ist der locate-Befehl?

Je nach Distribution kann der Befehl von plocate, mlocate oder GNU locate bereitgestellt werden. Ein geplanter Dienst oder updatedb erstellt den Index. Speicherorte der Datenbank, Berechtigungsfilter, Musterregeln und verfügbare Optionen variieren daher je nach Implementierung.

Grundlegende Syntax

locate [OPTION]... PATTERN...

Optionen und Randfälle können je nach Implementierung und Version variieren. Überprüfen Sie locate --help und man locate auf dem Zielsystem, bevor Sie sich auf implementierungsspezifisches Verhalten verlassen.

Grundlegende Verwendung von locate

Nach einem Teil eines Pfads suchen

Ein einfacher String stimmt normalerweise überall in einem indizierten vollständigen Pfad überein.

locate nginx.conf

Groß- und Kleinschreibung ignorieren

Verwenden Sie -i bei Implementierungen, die groß-/kleinschreibungsunabhängige Übereinstimmungen unterstützen.

locate -i readme.md

Vorhandene Pfade erforderlich

Die Option -e oder --existing überprüft, ob ein indiziertes Ergebnis noch existiert.

locate -e '*.service'

Warum schnelle Suchergebnisse nicht die neuesten Dateien garantieren

locate durchsucht einen vorab erstellten Pfadindex, anstatt die Festplatte direkt zu scannen. Auf einem System, dessen Index die Datei enthält, kann die folgende Abfrage sie finden:

locate /etc/passwd

Beispielausgabe:

/etc/passwd

Neue Dateien werden möglicherweise erst angezeigt, nachdem der Index aktualisiert wurde, und Dateien, die bereits gelöscht wurden, können weiterhin angezeigt werden. Wenn keine Ergebnisse vorliegen, überprüfen Sie den Indexstatus und das Suchmuster, und wenn die aktuelle Existenz von Dateien wichtig ist, überprüfen Sie erneut mit find.

Wichtige Optionen

Option Zweck
-i Groß-/Kleinschreibung beim Abgleichen ignorieren.
-e, --existing Nur Pfade drucken, die aktuell existieren.
-b, --basename Nur die letzte Komponente des Dateinamens abgleichen.
-c, --count Die Anzahl der Treffer statt der Pfade ausgeben.
-l N, --limit N Nach höchstens N Ergebnissen stoppen.
-r REGEXP Einen regulären Ausdruck in unterstützten Implementierungen abgleichen.
-d DBPATH Eine bestimmte Datenbank oder Datenbankliste durchsuchen.

Praktische Beispiele

Gezielt nach einem Basisnamen suchen

Der Basisnamen-Modus reduziert Übereinstimmungen, die nur durch Verzeichnisbestandteile verursacht werden.

locate -b '\hosts'

Zählen oder begrenzen Sie die Ergebnisse

Überprüfen Sie das Ergebnisvolumen, bevor Sie eine sehr große Pfadliste ausdrucken.

locate -c cache
locate -l 20 cache

Aktualisieren Sie den Systemindex

Ein vollständiges Update kann erhöhte Rechte und erheblichen I/O erfordern. Überprüfen Sie zunächst die geplante Update-Richtlinie der Distribution.

sudo updatedb

locate und verwandte Befehle

Befehl Hauptrolle Geeignet für
locate Indizierte Pfadnamensuche Schnelle Pfaderkennung
find Live-Dateisystem-Durchlauf Aktueller Zustand und umfassende Bedingungen
which PATH-Programmauflistung Befehlsermittlung
whereis Bekannte programmbezogene Speicherorte Binärdateien, Quelltext und Handbücher

Wichtige Hinweise

Der Index kann veraltet sein

Neue Dateien können fehlen und gelöschte Pfade können bis zum nächsten Datenbank-Update bestehen bleiben.

Die Pfadsichtbarkeit folgt der Richtlinie der Implementierung

Die Datenbankerstellung und die Berechtigungsfilterung bestimmen, welche indexierten Namen jeder Benutzer sehen darf.

Überprüfen Sie die installierte Implementierung

plocate, mlocate und GNU locate teilen viele Konzepte, unterscheiden sich jedoch in Optionen und exakter Mustersyntax.

FAQ

Warum ist locate nicht installiert?

Einige Distributionen installieren es nicht standardmäßig; das Paket kann plocate oder mlocate heißen.

Warum kann es eine Datei, die ich gerade erstellt habe, nicht finden?

Die Datenbank wurde möglicherweise nicht aktualisiert. Verwenden Sie find für eine sofortige Live-Suche.

Erfordert updatedb immer sudo?

Eine systemweite Datenbank erfordert normalerweise erhöhte Zugriffsrechte, obwohl einige Implementierungen Benutzerdatenbanken unterstützen.

Warum zeigt locate eine gelöschte Datei an?

Es ist ein veralteter Indexeintrag. Verwenden Sie -e oder aktualisieren Sie die Datenbank.

Weitere Angaben zu Syntax, Implementierung und Verfügbarkeit finden Sie unter GNU Findutils Handbuch.