8.8. Suchen nach Dateien oder Inhalten

Bash bietet Ihnen mehrere Befehle zur Suche nach Dateien und dem Inhalt von Dateien:

locate

Dieses Dienstprogramm steht nur zur Verfügung, wenn das Paket findutils-locate installiert ist. Mit diesem Befehl finden Sie den Speicherort der angegebenen Datei. Zur Angabe von Dateinamen können Sie auch Platzhalter verwenden. Das Programm ist sehr schnell, da es die Dateien in einer speziell für diesen Zweck erstellten Datenbank sucht, also nicht das gesamte Dateisystem durchsuchen muss. Hierdurch ergibt sich auch ein wesentlicher Nachteil: locate kann keine Dateien finden, die nach der letzten Aktualisierung der Datenbank erstellt wurden. Die Datenbank wird mit updatedb aktualisiert. Dazu benötigen Sie allerdings Root-Berechtigungen.

find

Mit diesem Befehl können Sie ein bestimmtes Verzeichnis nach einer Datei durchsuchen. Das erste Argument gibt das Verzeichnis an, in dem die Suche beginnt. Nach der Option -name muss der gesuchte Dateiname eingegeben werden (eventuell auch mit Platzhaltern). Im Gegensatz zu locate, das eine Datenbank durchsucht, sucht find nur im angegebenen Verzeichnis.

grep

Mit dem Befehl grep können Sie die angegebenen Dateien nach einer bestimmten Suchzeichenfolge durchsuchen. Wird das gesuchte Wort gefunden, dann wird die Zeile, in der sich die Suchzeichenfolge befindet, mit dem Namen der betreffenden Datei angezeigt. Zur Angabe von Dateinamen können Sie auch Platzhalter verwenden.

8.8.1. Beispiele für Suchen

KDE- und GNOME-Desktop speichern benutzerspezifische Anwendungsdaten in verborgenen Verzeichnissen, z. B. .kde und .gnome.

  1. Sie finden diese Verzeichnisse auf Ihrem Computer, indem Sie das Folgende eingeben:

    locate .kde

    wenn KDE-Desktop installiert ist, oder:

    locate .gnome

    wenn GNOME-Desktop installiert ist.

    Sie werden sehen, dass locate alle Dateinamen in der Datenbank anzeigt, die an beliebiger Stelle die Zeichenfolge .kde bzw. .gnome enthalten. Wie Sie dieses Verhalten ändern können, erfahren Sie auf der Manualpage für locate.

  2. Zum Durchsuchen Ihres Home-Verzeichnisses nach allen Instanzen von Dateien mit der Dateinamenserweiterung .txt geben Sie das Folgende ein:

    find ~ -name *.txt
  3. Zum Durchsuchen eines Verzeichnisses (in diesem Fall das Home-Verzeichnis) nach allen Instanzen von Dateien, die beispielsweise das Wort music enthalten, geben Sie das Folgende ein:

    grep music ~*.*

    Beachten Sie, dass bei grep die Groß- und Kleinschreibung unterschieden wird, sofern die Verwendung nicht mit der Option -i erfolgt. Mit dem obigen Befehl finden Sie keine Dateien, die das Wort Music enthalten.

    Wenn Sie eine Suchzeichenfolge verwenden, die aus mehreren Wörtern besteht, umgeben Sie die Zeichenfolge mit doppelten Anführungszeichen, z. B.:

    grep "music is great" ~*.*