Linux-Datei suchen - so geht's

Linux bietet verschiedene Möglichkeiten zum Suchen von Dateien und Ordnern. Wir zeigen Ihnen zwei wichtige Befehle, die Sie dafür benötigen.

In Pocket speichern vorlesen Druckansicht
Lesezeit: 4 Min.
Von
  • Jan-Hendrik Eriksen

Dateien auf einem Linux-System zu finden kann vergleichsweise kompliziert sein. Es stehen verschiedenste Werkzeuge zur Verfügung, die alle verschiedene Vor- und Nachteile haben. Wir stellen Ihnen im Folgenden zwei der wichtigsten Befehle zum Suchen von Linux-Dateien vor.

Der Befehl find ist standardmäßig unter Linux vorhanden und sucht Dateien in einem Verzeichnis und all seinen Unterverzeichnissen. Ein Nachteil von find ist allerdings, dass das System die Ordner erst einmal durchsuchen muss, was einige Zeit in Anspruch nehmen kann, wenn sich im genannten Verzeichnis viele Ordner und Unterordner befinden. In unserer Schritt-für-Schritt-Anleitung zeigen wir Ihnen die Konsolen-Befehle, die Sie am häufigsten benötigen.

1. Schritt:

Zunächst muss find ein Startpunkt mit find <Startpunkt> übergeben werden.
find
sucht im aktuellen Verzeichnis.
find /Arbeit
sucht im Verzeichnis "/Arbeit".
find /Arbeit /Freizeit
sucht in den Verzeichnissen "/Arbeit" und "/Freizeit".
find ~
sucht in Ihrem Benutzerverzeichnis.
find /
sucht überall.

2. Schritt:

Als Nächstes muss der gesuchte Dateiname eingegeben werden.
find <Startpunkt> -name "<Dateiname>"
oder alternativ
find <Startpunkt> -iname "<Dateiname>"
wenn Groß- und Kleinschreibung ignoriert werden soll.
find /home/heise-tipps-tricks -name "Hausarbeit.abc"
sucht beispielsweise alle Dateien mit dem Namen "Hausarbeit.abc" im Verzeichnis "/home/heise-tipps-tricks".

3. Schritt:

Im Suchbegriff können auch Wildcards bzw. Platzhalter verwendet werden. Benutzen Sie:
? für genau ein beliebiges Zeichen
* für beliebig viele Zeichen
find / -name "*.pdf"
sucht alle PDF-Dateien im System
find / -iname "test.*"
findet zum Beispiel "Test.jpg", "test.txt" (Groß- und Kleinschreibung wird ignoriert) und ähnliche Dateien.
find /home/heise-tipps-tricks -name "???.txt"
findet alle Dateien mit der Endung ".txt" deren Namen genau drei Zeichen lang sind. Zum Beispiel "abc.txt" oder "xyz.txt".

Wenn Sie sich noch genauer für die weiteren zahlreichen Möglichkeiten des find-Befehls unter Linux interessieren, können Sie im Terminal mit man find die dazugehörige Hilfeseite aufrufen.

Ein weiterer Konsolen-Befehl zur Dateisuche unter Linux ist locate. Der locate-Befehl ist dem find-Befehl sehr ähnlich. Dennoch unterscheidet sie ein wesentliches Detail: Während find die Dateien sucht, sobald der Befehl aufgerufen wird, hat locate bereits eine Datenbank mit allen Dateien angelegt. Die locate-Methode ist deshalb um ein Vielfaches schneller, liefert aber nicht immer korrekte Ergebnisse, da die Datenbank veraltet sein kann. Wir zeigen Ihnen in unserer Schritt-für-Schritt-Anleitung, wie Sie locate benutzen:

1. Schritt:

Falls locate nicht standardmäßig auf Ihrem Linux-Betriebssystem vorhanden ist, können Sie es mit dem Befehl sudo apt-get install mlocate nachträglich installieren. Geben Sie bei Nachfrage Ihr Passwort ein und bestätigen Sie dieses mit [Enter].

2. Schritt:

Wie bereits erwähnt, arbeitet locate auf Basis einer Datenbank. In der Regel wird diese täglich aktualisiert. Sollten Sie allerdings eine Datei suchen, die Sie gerade erst erstellt oder verschoben haben, müssen Sie die Datenbank manuell aktualisieren. Die manuelle Aktualisierung können Sie mit sudo updatedb erzwingen. Wenn Sie eine ältere Datei suchen, ist dieser Schritt überflüssig, schadet aber auch nicht.

3. Schritt:

Nun können Sie locate folgendermaßen verwenden: locate "<Suchbegriff>" oder auch locate -i "<Suchbegriff>" wenn nicht zwischen Groß- und Kleinschreibung unterschieden werden soll. Als Ausgabe erhalten Sie die Pfade zu den gefunden Dateien.

4. Schritt:

Ebenso wie bei find können auch hier Wildcards im Suchbegriff verwendet werden.
? für genau ein beliebiges Zeichen
* für beliebig viele Zeichen
Bedenken Sie hierbei allerdings, dass locate die absoluten Pfade zu den Dateien zurückgibt. Sollten Sie also alle Dateien mit dem Präfix "Hausarbeit" mit beliebiger Endung suchen wollen, verwenden Sie:
locate "*Hausarbeit.*"
Das erste "*" gibt hierbei an, dass alle Zeichen vorher beliebig sein können.
locate "Test.*"
Listet alle Dateien mit dem Namen "Test" und einer beliebigen Endung auf.
locate "*.pdf"
Zeigt ihnen alle Dateien mit der Endung ".pdf"

Wenn Sie sich noch mehr über den locate-Befehl erfahren möchten, können Sie im Terminal mit man locate die dazugehörige Hilfeseite aufrufen.

Mehr Infos

(jher)