Eine der häufigsten Operationen bei der Arbeit unter Linux ist die Suche nach Dateien und Verzeichnissen. Auf Linux-Systemen gibt es mehrere Befehle, mit denen Sie nach Dateien suchen können, wobei find und locate die am häufigsten verwendeten sind.
Der locate
Der Befehl ist der schnellste und einfachste Weg, um nach Dateien und Verzeichnissen anhand ihres Namens zu suchen.
In diesem Artikel erklären wir, wie man locate
verwendet Befehl.
Installation von locate
(Suchbefehl nicht gefunden) #
Abhängig von der Distribution und wie das System bereitgestellt wurde, kann das locate-Paket auf Ihrem Linux-System vorinstalliert sein oder nicht.
Um zu prüfen, ob der locate
Dienstprogramm installiert ist, öffnen Sie Ihr Terminal, geben Sie locate
ein und drücken Sie Enter
. Wenn das Paket installiert ist, zeigt das System locate: no pattern to search for specified
an . Andernfalls sehen Sie so etwas wie locate command not found
.
Wenn locate
nicht installiert ist, können Sie es einfach mit dem Paketmanager Ihrer Distribution installieren.
Installieren Sie locate
auf Ubuntu und Debian #
sudo apt update
sudo apt install mlocate
Installieren Sie locate
auf CentOS und Fedora #
sudo yum install mlocate
Wie funktioniert locate
Arbeit #
Der locate
Der Befehl sucht nach einem bestimmten Muster in einer Datenbankdatei, die von updatedb
generiert wird Befehl. Die gefundenen Ergebnisse werden auf dem Bildschirm angezeigt, eines pro Zeile.
Während der Installation des mlocate-Pakets wird ein Cron-Job erstellt, der die updatedb
ausführt Befehl alle 24 Stunden. Dadurch wird sichergestellt, dass die Datenbank regelmäßig aktualisiert wird. Weitere Informationen zum Cron-Job finden Sie unter /etc/cron.daily/mlocate
Datei.
Die Datenbank kann manuell aktualisiert werden, indem updatedb
ausgeführt wird als root oder Benutzer mit sudo-Privilegien:
sudo updatedb
Der Update-Vorgang wird je nach Anzahl der Dateien und Verzeichnisse und der Geschwindigkeit Ihres Systems einige Zeit in Anspruch nehmen.
Dateien, die nach der Datenbankaktualisierung erstellt wurden, werden nicht in den Lokalisierungsergebnissen angezeigt.
Verglichen mit dem mächtigeren find
Befehl, der das Dateisystem durchsucht, locate
arbeitet viel schneller, aber es fehlen viele Funktionen und es kann nur nach dem Dateinamen gesucht werden.
So verwenden Sie locate
Befehl #
Die Syntax für locate
Befehl lautet wie folgt:
locate [OPTION] PATTERN...
In seiner einfachsten Form, wenn es ohne Optionen verwendet wird, ist locate
Der Befehl gibt den absoluten Pfad aller Dateien und Verzeichnisse aus, die dem Suchmuster entsprechen und für die der Benutzer Leserechte hat.
Zum Beispiel, um nach einer Datei namens .bashrc
zu suchen Sie würden Folgendes eingeben:
locate .bashrc
Die Ausgabe enthält die Namen aller Dateien, die die Zeichenfolge .bashrc
enthalten in ihren Namen:
/etc/bash.bashrc
/etc/skel/.bashrc
/home/linuxize/.bashrc
/usr/share/base-files/dot.bashrc
/usr/share/doc/adduser/examples/adduser.local.conf.examples/bash.bashrc
/usr/share/doc/adduser/examples/adduser.local.conf.examples/skel/dot.bashrc
Die /root/.bashrc
Datei wird nicht angezeigt, da wir den Befehl als normaler Benutzer ausgeführt haben, der keine Zugriffsberechtigungen für /root
hat Verzeichnis.
Wenn die Ergebnisliste lang ist, können Sie die Ausgabe zur besseren Lesbarkeit an less
weiterleiten Befehl:
locate .bashrc | less
Der locate
Der Befehl akzeptiert auch Muster, die Globbing-Zeichen wie das Platzhalterzeichen *
enthalten . Wenn das Muster keine Globbing-Zeichen enthält, sucht der Befehl nach *PATTERN*
. Deshalb wurden im vorherigen Beispiel alle Dateien angezeigt, die das Suchmuster im Namen enthalten.
Der Platzhalter ist ein Symbol, das zur Darstellung von null, einem oder mehreren Zeichen verwendet wird. Zum Beispiel, um nach allen .md
zu suchen Dateien auf dem System würden Sie Folgendes eingeben:
locate *.md
Um die Suchergebnisse einzuschränken, verwenden Sie das -n
Option gefolgt von der Anzahl der anzuzeigenden Ergebnisse. Der folgende Befehl sucht nach allen .py
Dateien und zeigt nur 10 Ergebnisse an:
locate -n 10 *.py
Standardmäßig locate
führt Suchen mit Berücksichtigung der Groß-/Kleinschreibung durch. Das -i
(--ignore-case
)-Option teilt locate
mit um die Groß-/Kleinschreibung zu ignorieren und eine Suche ohne Berücksichtigung der Groß-/Kleinschreibung durchzuführen.
locate -i readme.md
/home/linuxize/p1/readme.md
/home/linuxize/p2/README.md
/home/linuxize/p3/ReadMe.md
Um die Anzahl aller übereinstimmenden Einträge anzuzeigen, verwenden Sie -c
(--count
) Möglichkeit. Der folgende Befehl würde die Anzahl aller Dateien zurückgeben, die .bashrc
enthalten in ihren Namen:
locate -c .bashrc
6
Standardmäßig locate
prüft nicht, ob die gefundenen Dateien noch im Dateisystem existieren. Wenn Sie eine Datei nach dem letzten Datenbank-Update gelöscht haben und die Datei dem Suchmuster entspricht, wird sie in die Suchergebnisse aufgenommen.
Um nur die Namen der Dateien anzuzeigen, die zum Zeitpunkt locate
existieren ausgeführt wird, verwenden Sie das -e
(--existing
) Möglichkeit. Folgendes würde beispielsweise nur die vorhandene .json
zurückgeben Dateien:
locate -e *.json
Wenn Sie eine komplexere Suche durchführen müssen, verwenden Sie -r
(--regexp
)-Option, mit der Sie mit einem einfachen regulären Ausdruck anstelle von Mustern suchen können. Diese Option kann mehrfach angegeben werden.
Zum Beispiel, um nach allen .mp4
zu suchen und .avi
Dateien auf Ihrem System und ignorieren Sie die Groß-/Kleinschreibung, würden Sie Folgendes ausführen:
locate --regex -i "(\.mp4|\.avi)"
Schlussfolgerung #
Der locate
Durchsucht das Dateisystem nach Dateien und Verzeichnissen, deren Name einem bestimmten Muster entspricht. Die Befehlssyntax ist leicht zu merken und die Ergebnisse werden fast sofort angezeigt.
Weitere Informationen zu allen verfügbaren Optionen von locate
Geben Sie den Befehl man locate
ein in Ihrem Terminal.
Wenn Sie Fragen haben, können Sie gerne einen Kommentar hinterlassen.