Grundlegende Dateisuchen mit find
und Wildcards durchführen
In diesem Schritt lernen Sie, wie Sie den find
-Befehl verwenden, eines der leistungsstärksten Werkzeuge in der Linux-Kommandozeile zum Suchen von Dateien und Verzeichnissen. Wir beginnen mit grundlegenden namensbasierten Suchen und führen Wildcards ein, um Dateimuster zu finden.
Zuerst erstellen wir ein dediziertes Verzeichnis und einige Beispieldateien für unsere Übung. Dies stellt sicher, dass wir eine kontrollierte Umgebung haben, um zu sehen, wie find
funktioniert, ohne andere Teile des Dateisystems zu beeinträchtigen.
- Stellen Sie sicher, dass Sie sich im korrekten Startverzeichnis befinden. Alle Arbeiten für dieses Labor werden innerhalb von
~/project
durchgeführt.
cd ~/project
- Erstellen Sie ein neues Verzeichnis namens
find_lab
und wechseln Sie hinein.
mkdir find_lab
cd find_lab
- Erstellen wir nun eine Reihe von Dateien und ein Unterverzeichnis, durch das wir suchen können. Wir verwenden den
touch
-Befehl zum Erstellen leerer Dateien und mkdir
für das Verzeichnis.
touch file1.txt file2.log report.txt File1.TXT
mkdir subdir
touch subdir/file3.txt subdir/another.log
Sie können die Struktur mit dem Befehl ls -R
überprüfen, der Dateien im aktuellen Verzeichnis und seinen Unterverzeichnissen rekursiv auflistet.
ls -R
Sie sollten eine Ausgabe ähnlich dieser sehen:
.:
File1.TXT file1.txt file2.log report.txt subdir
./subdir:
another.log file3.txt
Nachdem unsere Testumgebung nun bereit ist, beginnen wir mit der Suche.
Die grundlegende Syntax für den find
-Befehl lautet find [Pfad] [Ausdruck]
. Der [Pfad]
teilt find
mit, wo mit der Suche begonnen werden soll, und der [Ausdruck]
definiert, wonach gesucht werden soll.
Suche nach exaktem Dateinamen
Um eine Datei nach ihrem exakten Namen zu finden, verwenden Sie den Ausdruck -name
. Suchen wir die Datei report.txt
. Wir verwenden .
als Pfad, was find
anweist, die Suche vom aktuellen Verzeichnis aus zu starten.
find . -name "report.txt"
Die Ausgabe zeigt den Pfad zu der gefundenen Datei:
./report.txt
Suche mit Wildcards
Wildcards ermöglichen es Ihnen, nach Dateien basierend auf Mustern zu suchen. Die gebräuchlichste Wildcard ist der Stern (*
), der eine beliebige Zeichenfolge abgleicht.
Es ist eine bewährte Methode, das Muster in doppelte Anführungszeichen ("
) zu setzen, um zu verhindern, dass die Shell die Wildcard interpretiert, bevor der find
-Befehl sie verwenden kann.
Suchen wir alle Dateien, die auf die Erweiterung .txt
enden.
find . -name "*.txt"
find
durchsucht rekursiv das aktuelle Verzeichnis (.
) und alle seine Unterverzeichnisse:
./file1.txt
./report.txt
./subdir/file3.txt
Beachten Sie, dass File1.TXT
nicht gefunden wurde, da -name
eine Groß-/Kleinschreibung beachtende Suche durchführt. Um eine Groß-/Kleinschreibung ignorierende Suche durchzuführen, verwenden Sie den Ausdruck -iname
(insensitive name).
find . -iname "*.txt"
Nun enthält die Ausgabe alle Dateien, die auf .txt
enden, unabhängig von der Groß-/Kleinschreibung:
./file1.txt
./report.txt
./File1.TXT
./subdir/file3.txt
Suche nach Dateityp
Sie können find
auch anweisen, nur nach bestimmten Arten von Dateisystemobjekten wie Dateien oder Verzeichnissen zu suchen, indem Sie den Ausdruck -type
verwenden. Verwenden Sie -type f
für reguläre Dateien und -type d
für Verzeichnisse.
Suchen wir nur die Verzeichnisse an unserem aktuellen Speicherort.
find . -type d
Die Ausgabe listet das aktuelle Verzeichnis (.
) und das von uns erstellte subdir
auf:
.
./subdir
Sie können Ausdrücke kombinieren, um spezifischere Suchen zu erstellen. Suchen Sie beispielsweise nach allen Dateien (nicht Verzeichnissen), die auf .log
enden:
find . -type f -name "*.log"
Dieser Befehl findet alle Elemente, die Dateien sind UND deren Name auf .log
endet.
./file2.log
./subdir/another.log
Sie haben nun die Grundlagen der Verwendung von find
mit Namensmustern und Typfiltern gelernt. In den nächsten Schritten werden wir fortgeschrittenere Fähigkeiten dieses Befehls untersuchen.