Dateien unter Linux suchen

Dateimanager

Die Dateimanager unter Linux haben in der Menüleiste einen Button mit einer Lupe als Symbol. Ein Klick darauf öffnet ein Suchfeld, über das ein Suchbegriff eingegeben werden kann. Möchte ich beispielsweise nach allen Dateien und Verzeichnissen suchen, in deren Namen „dev“ vorkommt, gebe ich entsprechenden Begriff ein und erhalte dann die dazugehörigen Ergebnisse. Dabei werden mir auch jene Dateien und Ordner angezeigt als Ergebnis angezeigt, die sich in Unterverzeichnissen von „Documents“ befinden. Ausgeschlossen sind aber versteckte Dateien und Verzeichnisse, also solche, die mit einem Punkt im Namen beginnen.

Die Suche im Ubuntu-Dateimanager

Kommandozeile

Über die Kommandozeile kann so ziemlich jede Aufgabe durchgeführt werden. So auch das Suchen nach Dateien. In der Desktopumgebung GNOME steht für die Eingabe von Befehlen über die Kommandozeile standardmäßig das Programm gnome-terminal zur Verfügung. Unter KDE ist es die Anwendung konsole. Darüber hinaus existieren noch weitere Programme wie beispielsweise xterm, rxvt oder terminator.

Mit dem ausführen des Terminals bzw. der Konsole wird eine Shell gestartet. Auf Linux-Systemen ist dies standardmäßig die Bash (Bourne-Again-Shell).

In der Bash steht für die Suche der Befehl find zur Verfügung. Um im Dokumente-Ordner nach „dev“ zu suchen, wechsle ich zunächst in das Verzeichnis „Documents“ und führe anschließend find aus:

$ cd Documents
$ find . -name "dev"
./dev

Der Punkt hinter find meint das aktuelle Verzeichnis (hier: „Documents“) als Ausgangspunkt. Hinter -name folgt dann der Suchbegriff.

Als Ergebnis bekomme ich hier das Verzeichnis „dev“ angezeigt. Im Gegensatz zum obigen Beispiel, erscheinen aber nicht die beiden Textdateien mit dem Namen „requirements_dev.txt“. Das hängt nicht damit zusammen, dass Unterverzeichnisse nicht durchsucht werden, sondern liegt in dem Suchbegriff „dev“ begründet. Als Ergebnis habe ich mit dem Verzeichnis „dev“ die exakte Übereinstimmung erhalten. Sollen auch jene Dateien und Verzeichnisse ausgegeben werden, in denen „dev“ nur ein Teil des Namens ist, dann muss das Sternchen (*) als Platzhalter verwendet werden. Gebe ich bei mir beispielsweise folgendes ein, dann sieht das Ergebnis so aus wie oben im Dateimanager:

$ find . -name "*dev*"
./dev
./dev/imessage_reader/requirements_dev.txt
./dev/profiles-backup/requirements_dev.txt

Dazu noch drei ergänzende Hinweise: Da wäre zunächst der Name „Documents“. Dies hängt damit zusammen, dass mein System auf „Englisch“ als Sprache eingestellt ist. Um in das Dokumente-Verzeichnis wechseln zu können, müsst Ihr eventuell

$ cd Dokumente

eingeben.

Es kann vorkommen, dass sehr viele Ergebnisse angezeigt werden. In so einem Fall kann die Verwendung von more sinnvoll sein:

$ find . -name "*dev*" | more

Mit der Enter-Taste könnt Ihr Euch dann die jeweils nächste Zeile ausgeben lassen. Mit q gelangt Ihr zur Eingabeaufforderung zurück.

Im Gegensatz zur Suche im Dateimanager, werden mit find auch versteckte Verzeichnisse durchsucht. Wenn Ihr das verhindern möchtet, hilft \( ! -path '*/.*' \) weiter. In meinem Fall würde die Anweisung dann so aussehen:

$ find . \( ! -path '*/.*' \) -name "*dev*"

Viele zusätzliche Informationen zu find erhaltet Ihr über die Manpages:

$ man find