lokalisieren vs. finden vs. woist: Linux-Suchbefehle im Vergleich

Das locate-Kommando ermöglicht schnelles Finden von Dateien über eine Datenbank. Es wird ergänzt durch find für detaillierte Echtzeitsuchen und whereis für spezifische Programmstandorte.
Das locate-Kommando
Das locate-Kommando ist dafür ausgelegt, Dateien und Verzeichnisse basierend auf ihren Namen oder Teilen davon nahezu instand zu finden. Es ist unglaublich schnell, da es nicht das Dateisystem in Echtzeit durchsucht. Stattdessen fragt es eine vorgebaute Datenbank ab, die üblicherweise mlocate.db, plocate.db oder einfach locate.db genannt wird, abhängig von Ihrer Distribution.
Diese Datenbank wird nicht in Echtzeit aktualisiert. Wenn Sie gerade eine Datei erstellt oder gelöscht haben, könnte locate davon erst beim nächsten Datenbankupdate erfahren. Die Datenbank wird regelmäßig von einem Systemprozess aktualisiert, typischerweise über einen cron-Job, der täglich läuft. Sie können die Datenbank auch manuell mit "sudo updatedb" aktualisieren, wobei die Indizierung des gesamten Dateisystems einige Zeit in Anspruch nehmen kann.
Die grundlegende Syntax ist erfrischend einfach:
locate -i dateiname
Falls die Datei existiert und die Datenbank auf dem neuesten Stand ist, listet locate alle Pfade auf, die "my_script.sh" enthalten. Die Option -i macht Ihre Suche groß- und kleinschreibungsunempfindlich.
locate vs. mlocate vs. plocate
Im Laufe der Zeit wurde das ursprüngliche locate-Utility in den meisten Distributionen durch mlocate ersetzt, das wichtige Verbesserungen einführte, wie beispielsweise das Respektieren von Benutzerberechtigungen, sodass Sie nur Dateien sehen, auf die Sie Zugriff haben.
Wenn mlocate installiert ist, bietet es das locate-Kommando selbst an. Selbst wenn Sie also locate eintippen, führen Sie tatsächlich mlocate im Hintergrund aus. Dies können Sie bestätigen, indem Sie die Version überprüfen:
locate --version
Das zeigt an, welche locate-Version Ihre Suchen abwickelt.
Neuester Zeit begann eine neuere Implementierung namens plocate, mlocate in einigen Distributionen zu ersetzen. plocate ist schneller und effizienter, da es einen komprimierten Index verwendet, um die Suchzeit und den Speicherplatzverbrauch zu reduzieren – besonders hilfreich bei Systemen mit einer großen Anzahl von Dateien. Fedora beispielsweise verwendet jetzt standardmäßig plocate, und viele andere Distributionen beginnen ebenfalls damit.
Sie können plocate auch mit Ihrem standardmäßigen Paketmanager installieren, wie auf Ubuntu, indem Sie Folgendes ausführen:
sudo apt install plocate
Das find-Kommando
Im Gegensatz zum locate-Kommando sucht das find-Kommando in Echtzeit nach Dateien und Verzeichnissen, indem es direkt durch die angegebene Verzeichnisstruktur navigiert. Es verlässt sich nicht auf eine Datenbank, was bedeutet, dass es immer die aktuellsten Informationen zurückgibt. Das kann jedoch bedeuten, dass es langsamer als locate ist, insbesondere bei der Suche in großen Dateisystemen.
Was find auszeichnet, ist die Fähigkeit, basierend auf einer Vielzahl von Kriterien zu suchen – nicht nur nach Namen, sondern auch nach Typ, Größe, Berechtigungen, Eigentum, Änderungsdatum und vielem mehr. Als wäre das nicht genug, kann find auch beliebige Befehle (wie rm, cp oder chmod) auf die gefundenen Dateien mit der Option -exec ausführen.
Hier ist die grundlegende Syntax:
find [pfad] [optionen] [ausdruck]
- pfad: Wo die Suche beginnen soll (verwenden Sie . für das aktuelle Verzeichnis)
- optionen & ausdruck: Was gesucht werden soll und wie die Ergebnisse gefiltert werden
Um beispielsweise eine Datei namens config.xml in Ihrem Home-Verzeichnis und seinen Unterverzeichnissen zu finden, führen Sie Folgendes aus:
find /home/Ihr_benutzername -name "config.xml"
find /var/log -iname "error*.log"
Dies würde Dateien wie error.log, Error.Log und ERROR-messages.log in /var/log finden.
Sie können auch nach bestimmten Dateitypen suchen. Um beispielsweise alle Verzeichnisse (d) im aktuellen Pfad zu finden, verwenden Sie:
find . -type d
Oder Sie können Dateien finden, die größer sind als eine bestimmte Größe, wie 100 MB (+100M) in Ihrem /opt-Verzeichnis mit:
find /opt -size +100M
Darüber hinaus können Sie nach leeren Dateien, leeren Verzeichnissen oder Elementen basierend auf ihren spezifischen Änderungszeiten suchen. Sie können auch andere Befehle auf jede gefundene Datei mit find ausführen, wie das Löschen aller .tmp-Dateien mit:
find . -name "*.tmp" -exec rm
Der whereis Befehl
Er ist besonders nützlich, wenn Sie verstehen möchten, wie ein Befehl auf Ihrem System installiert ist oder wenn Sie Probleme mit der Programmausführung beheben.
Im Gegensatz zu locate und find sucht whereis nur in einer vordefinierten Menge von Verzeichnissen, in denen diese Dateitypen normalerweise gespeichert sind – Orte wie /bin, /usr/bin und /usr/local/bin für Binärdateien; /usr/share/man für Handbuchseiten; sowie verschiedene Quellcode-Verzeichnisse.
Wenn Sie beispielsweise die ls-Binärdatei, deren Quellcode (sofern verfügbar) und die zugehörigen Handbuchseiten finden möchten, können Sie Folgendes ausführen:
whereis ls
Dies zeigt Ihnen, dass sich die ls-Binärdatei unter "/bin/ls" und die Handbuchseite unter "/usr/share/man/man1/ls.1.gz" befindet.
Wenn Sie sich nur für den ausführbaren Pfad interessieren, verwenden Sie die Option -b (binary):
whereis -b ls
Um nur die Handbuchseiten zu finden, verwenden Sie die Option -m (man):
whereis -m bash
Sie können whereis auch nach mehreren Befehlen auf einmal fragen:
whereis grep sed awk
Oft werden Quellcodedateien nicht standardmäßig installiert. In solchen Fällen kann die Ausgabe nur den Befehlnamen enthalten, wenn keine Quelle in den Standardverzeichnissen gefunden wird.
Wann man jeden Befehl verwenden sollte
Sie können den locate-Befehl verwenden, wenn Sie einen schnellen, systemweiten Überblick darüber haben möchten, wo bestimmte Dateien mit einem bestimmten Namen existieren. Außerdem funktioniert er am besten, wenn Sie sich relativ sicher sind, dass die Datei nicht brandneu ist oder Sie die Datenbank kürzlich aktualisiert haben.
Auf der anderen Seite ist der find-Befehl besser geeignet, wenn Sie nach Kriterien suchen müssen, die über den Namen hinausgehen, wie z.B. Dateigröße, Typ, Berechtigungen oder Änderungsdatum. Er ist besonders nützlich, wenn Sie einen bestimmten Verzeichnisbaum tief durchsuchen oder wenn die Datei, die Sie suchen, neu sein könnte und noch nicht in der locate-Datenbank enthalten ist. find glänzt auch, wenn Sie Echtzeitergebnisse benötigen oder Aktionen wie Löschen, Kopieren oder Ändern von Berechtigungen an den gefundenen Dateien durchführen möchten.
Der whereis-Befehl ist praktisch, wenn Sie speziell die ausführbare Binärdatei eines Befehls, Quellcodedateien oder Handbuchseiten lokalisieren müssen. Er ist besonders nützlich beim Beheben von Problemen mit dem PATH Ihres Systems oder beim Verständnis, wo und wie ein Programm installiert ist.
Manchmal können Ihre Anforderungen bei allen drei Befehlen miteinander übereinstimmen. Wenn locate zu viele Ergebnisse zurückgibt, können Sie beispielsweise dessen Ausgabe verwenden, um einen Startpfad für eine genauere find-Suche einzugrenzen. Diese Befehle schließen sich nicht aus – sie funktionieren am besten, wenn sie als Teil Ihres Linux-Toolkits gemeinsam verwendet werden.
Löse deine Fragen
Was ist der Unterschied zwischen den Befehlen „Find“ und „Locate“ in Linux?
Der Befehl „find“ und der Befehl „locate“ in Linux dienen beide der Auffindung von Dateien, jedoch unterscheiden sie sich in ihrer Funktionsweise:
- -
Datenquelle
- :
- find: Durchsucht das Dateisystem in Echtzeit. Es listet alle Dateien auf, die den angegebenen Kriterien entsprechen, unabhängig von ihrem Speicherort.
- locate: Greift auf eine vorgefertigte Datenbank zu, die regelmäßig aktualisiert wird. Diese Datenbank enthält Informationen zu Dateien und Verzeichnissen.
- Geschwindigkeit:
- find: Kann langsamer sein, da es das gesamte Dateisystem durchsucht.
- locate: Ist in der Regel viel schneller, da es lediglich die Datenbank abfragt.
- Flexibilität:
- find: Bietet umfassendere Suchoptionen, einschließlich der Filterung nach Dateiattributen (z. B. Größe, Änderungsdatum).
- locate: Ist einfacher und eignet sich besser für schnelle, grundlegende Suchen. Zusammengefasst ist „find“ ideal für gründliche und flexible Suchen, während „locate“ bevorzugt wird, wenn Geschwindigkeit über die Aktualität der Daten geht.
Welche Vor- und Nachteile hat die Verwendung von „locate“ gegenüber „find“ in Linux?
Die Verwendung von „locate“ hat mehrere Vor
- - und Nachteile im Vergleich zu „find“ in Linux:
Vorteile von „locate“:
- Geschwindigkeit: Es ist in der Regel schneller als andere Suchbefehle wie „find“, da es eine Datenbank statt des eigentlichen Dateisystems durchsucht.
- Einfachheit: Der Befehl ist einfach zu bedienen und erfordert weniger Parameter für eine grundlegende Suche.
- Geringer Ressourcenverbrauch: Da es sich auf eine vorher durchsuchte Datenbank stützt, benötigt es in der Regel weniger CPU- und Speicherressourcen. Nachteile von „locate“:
- Nicht in Echtzeit: Die Datenbank wird nicht in Echtzeit aktualisiert, was bedeutet, dass neue Dateien oder gelöschte Dateien möglicherweise nicht sofort erkannt werden.
- Wartungsaufwand: Die Datenbank muss regelmäßig aktualisiert werden (z.B. durch den Dienst „updatedb“), was zusätzlichen Wartungsaufwand bedeutet.
- Begrenzte Suche: „locate“ kann keine detaillierten Suchparameter wie „find“ nutzen, etwa um nach bestimmten Dateiattributen oder spezifischen Verzeichnissen zu suchen. Zusammengefasst ist „locate“ ideal für schnelle und unkomplizierte Suchen, während „find“ mehr Flexibilität und Echtzeitdaten bietet.
Wie heißt der Befehl, um Dateien zu suchen in Linux?
Der Befehl zur Suche von Dateien in Linux ist find. Mit find können Sie gezielt in Verzeichnisstrukturen nach Dateien suchen, die bestimmten Kriterien entsprechen. Hier sind einige Anwendungsbeispiele:
- -
Basis-Syntax
- : bash find -name
- Beispiele für Suchkriterien:
- Nach Dateinamen: bash find /home/user -name '.txt'
- Nach Dateigröße: bash find /var/log -size +100M
- Nach Änderungsdatum: bash find /tmp -mtime -7
- Rekursive Suche*:
finddurchsucht alle Unterverzeichnisse, es ist also nicht nötig, tieferliegende Ordner manuell anzusprechen. Dieser Befehl ist ein leistungsstarkes Werkzeug für die Datei- und Verzeichnisverwaltung in Linux.
Was macht Find Linux?
Find Linux ist ein leistungsstarkes Kommandozeilenprogramm, das zur Dateisuche in gesamten Verzeichnisstrukturen verwendet wird. Es bietet eine Vielzahl von Filtermöglichkeiten, um die Suche nach bestimmten Kriterien zu verfeinern. Hier sind einige der Hauptfunktionen:
- -
Dateinamenssuche:
- Finden von Dateien anhand spezifischer oder vergleichbarer Namen.
- Alter der Dateien: Filtern von Dateien nach ihrem Erstellungs- oder Änderungsdatum.
- Dateigröße: Auswahl von Dateien basierend auf ihrer Größe, z.B. größere oder kleinere Dateien.
- Ergebnisverarbeitung: Möglichkeit, die gefundenen Dateien für weitere Aktionen zu verwenden, z.B. Löschen oder Verschieben.
- Ausgabeformatierung: Anpassen der Display-Optionen für eine übersichtliche Präsentation der Ergebnisse. Durch diese Flexibilität ist „find“ ein unverzichtbares Werkzeug für Systemadministratoren und Entwickler in der Linux-Umgebung.
Bist du neugierig auf weitere Artikel wie lokalisieren vs. finden vs. woist: Linux-Suchbefehle im Vergleich? Entdecke spannende Inhalte in der Kategorie Linux.

Schreibe einen Kommentar