Einführung
In diesem Lab lernen Sie, wie Sie mithilfe des leistungsstarken Befehls find effektiv nach Dateien in einem Linux-System suchen können. Der Befehl find ist ein vielseitiges Werkzeug, das es Ihnen ermöglicht, nach Dateien und Verzeichnissen anhand verschiedener Kriterien wie Name, Größe, Änderungszeit und vieles mehr zu suchen.
Am Ende dieses Labs können Sie Folgendes:
- Die Grundsyntax des Befehls
findverwenden - Nach Dateien mit bestimmten Namen suchen
- Dateien anhand ihrer Größe finden
- Mehrere Suchkriterien kombinieren
Diese Fähigkeiten sind für Systemadministratoren, Entwickler und alle, die mit Linux-Systemen arbeiten und Dateien im Dateisystem effizient lokalisieren müssen, unerlässlich.
Erkundung der Grundlagen von find
Der Befehl find ist ein leistungsstarkes Werkzeug in Linux, das Ihnen hilft, nach Dateien und Verzeichnissen an einem bestimmten Ort zu suchen. Die Grundsyntax des find-Befehls lautet:
find [startpunkt] [optionen] [ausdruck]
Hierbei gilt:
[startpunkt]ist das Verzeichnis, in demfinddie Suche beginnen soll[optionen]steuern, wie die Suche durchgeführt wird[ausdruck]definiert die Kriterien für die Auswahl von Dateien
Erstellen wir zunächst eine Verzeichnisstruktur, um damit zu üben. Öffnen Sie Ihr Terminal und führen Sie die folgenden Befehle aus:
mkdir -p ~/project/files/{documents,images,music}
touch ~/project/files/documents/{report.txt,notes.txt,project.pdf}
touch ~/project/files/images/{photo1.jpg,photo2.jpg,diagram.png}
touch ~/project/files/music/{song1.mp3,song2.mp3}
Diese Befehle erstellen eine Verzeichnisstruktur mit mehreren Unterverzeichnissen und Dateien verschiedener Typen.
Nun verwenden wir den find-Befehl, um alle Dateien im files-Verzeichnis aufzulisten:
find ~/project/files -type f
Sie sollten eine Ausgabe ähnlich der folgenden sehen:
/home/labex/project/files/documents/report.txt
/home/labex/project/files/documents/notes.txt
/home/labex/project/files/documents/project.pdf
/home/labex/project/files/images/photo1.jpg
/home/labex/project/files/images/photo2.jpg
/home/labex/project/files/images/diagram.png
/home/labex/project/files/music/song1.mp3
/home/labex/project/files/music/song2.mp3
In diesem Befehl:
~/project/filesgibt an, wo die Suche beginnen soll-type fteiltfindmit, nur nach Dateien (keinen Verzeichnissen) zu suchen
Sie können find auch verwenden, um nur Verzeichnisse aufzulisten:
find ~/project/files -type d
Dies wird Folgendes anzeigen:
/home/labex/project/files
/home/labex/project/files/documents
/home/labex/project/files/images
/home/labex/project/files/music
Die Option -type d teilt find mit, nur nach Verzeichnissen zu suchen.
Suchen von Dateien nach Name
Eine der häufigsten Anwendungen des find-Befehls ist die Suche nach Dateien anhand ihres Namens. Die Option -name ermöglicht es Ihnen, ein Muster anzugeben, das mit Dateinamen übereinstimmen muss.
Angenommen, Sie möchten alle Textdateien im files-Verzeichnis finden. Sie können den folgenden Befehl verwenden:
find ~/project/files -type f -name "*.txt"
Dieser Befehl sollte die folgenden Ergebnisse zurückgeben:
/home/labex/project/files/documents/report.txt
/home/labex/project/files/documents/notes.txt
In diesem Befehl:
-name "*.txt"teiltfindmit, Dateinamen zu finden, die mit.txtenden- Das
*ist ein Platzhalter, der eine beliebige Anzahl von Zeichen darstellt
Die Option -name ist case-sensitive (groß- und kleinschreibungssensitiv). Wenn Sie unabhängig von der Groß- und Kleinschreibung suchen möchten, verwenden Sie stattdessen -iname:
find ~/project/files -type f -iname "*.TXT"
Dieser Befehl findet dennoch report.txt und notes.txt, auch wenn wir die Dateierweiterung in Großbuchstaben angegeben haben.
Jetzt versuchen wir, eine bestimmte Datei zu finden. Erstellen wir zunächst eine neue Datei mit einem eindeutigen Namen:
touch ~/project/files/documents/important_report.txt
Um diese spezifische Datei zu finden:
find ~/project/files -type f -name "important_report.txt"
Ausgabe:
/home/labex/project/files/documents/important_report.txt
Sie können auch in bestimmten Unterverzeichnissen suchen. Beispielsweise können Sie nur im images-Verzeichnis suchen:
find ~/project/files/images -type f -name "*.jpg"
Ausgabe:
/home/labex/project/files/images/photo1.jpg
/home/labex/project/files/images/photo2.jpg
Dieser Befehl sucht nur innerhalb des images-Verzeichnisses nach Dateien mit der .jpg-Erweiterung.
Suchen von Dateien nach Größe
Der find-Befehl kann auch mit der Option -size nach Dateien anhand ihrer Größe suchen. Dies ist nützlich, wenn Sie große Dateien finden möchten, die möglicherweise viel Speicherplatz belegen, oder kleine, möglicherweise leere Dateien.
Zunächst verstehen wir die Syntax für die -size-Option:
-size n[cwbkMG]
Hierbei gilt:
nist eine Zahl- Die Buchstaben stellen Einheiten dar: c (Bytes), w (2-Byte-Wörter), b (512-Byte-Blöcke), k (Kilobyte), M (Megabyte), G (Gigabyte)
- Wenn
nmit+vorangestellt wird, bedeutet dies "größer als n", und-bedeutet "kleiner als n"
Fügen wir unseren Dateien etwas Inhalt hinzu, um ihnen unterschiedliche Größen zu geben:
echo "This is a short text file." > ~/project/files/documents/notes.txt
for i in {1..100}; do
echo "This is line $i of the important report." >> ~/project/files/documents/important_report.txt
done
Jetzt suchen wir nach Dateien, die kleiner als 100 Bytes sind:
find ~/project/files -type f -size -100c
Dies kann einige unserer leeren oder fast leeren Dateien umfassen.
Um Dateien zu finden, die größer als 1 Kilobyte sind:
find ~/project/files -type f -size +1k
Dies sollte unsere important_report.txt-Datei einschließen, da wir ihr 100 Zeilen hinzugefügt haben.
Sie können auch eine exakte Größe angeben. Erstellen wir eine Datei mit genau 50 Bytes:
echo -n "This is exactly 50 bytes long........................." > ~/project/files/documents/exact_size.txt
Jetzt suchen wir nach Dateien, die genau 50 Bytes groß sind:
find ~/project/files -type f -size 50c
Ausgabe:
/home/labex/project/files/documents/exact_size.txt
Um die Größe der Datei zu überprüfen, können Sie den ls -l-Befehl verwenden:
ls -l ~/project/files/documents/exact_size.txt
Die zweite Spalte in der Ausgabe zeigt die Dateigröße in Bytes an, die 50 sein sollte.
Kombinieren mehrerer Suchkriterien
Der find-Befehl wird noch leistungsfähiger, wenn Sie mehrere Suchkriterien kombinieren. Sie können logische Operatoren verwenden, um komplexe Suchmuster zu erstellen.
Verwenden der UND-Logik
Standardmäßig verwendet find, wenn Sie mehrere Kriterien angeben, die UND-Logik, was bedeutet, dass alle Bedingungen erfüllt sein müssen. Beispielsweise können Sie alle Textdateien größer als 100 Bytes finden:
find ~/project/files -type f -name "*.txt" -size +100c
Dieser Befehl findet Dateien, die sowohl Textdateien sind UND größer als 100 Bytes.
Verwenden der ODER-Logik mit -o
Um die ODER-Logik zu verwenden, können Sie die Option -o nutzen. Beispielsweise können Sie Dateien finden, die entweder Textdateien ODER PDF-Dateien sind:
find ~/project/files -type f \( -name "*.txt" -o -name "*.pdf" \)
Beachten Sie die Verwendung von Klammern, die mit Backslashes maskiert werden müssen. Dieser Befehl findet Dateien, die eine der beiden Bedingungen erfüllen.
Die Ausgabe sollte Folgendes enthalten:
/home/labex/project/files/documents/report.txt
/home/labex/project/files/documents/notes.txt
/home/labex/project/files/documents/important_report.txt
/home/labex/project/files/documents/exact_size.txt
/home/labex/project/files/documents/project.pdf
Verwenden der NICHT-Logik mit
Um eine Bedingung zu negieren, verwenden Sie den !-Operator. Beispielsweise können Sie alle Dateien finden, die keine Textdateien sind:
find ~/project/files -type f ! -name "*.txt"
Dieser Befehl findet alle Dateien, die nicht die .txt-Erweiterung haben.
Komplexe Beispiele
Versuchen wir einige komplexere Kombinationen. Beispielsweise können Sie alle Dateien finden, die:
- Entweder JPG- oder PNG-Bilder sind UND
- Größer als 0 Bytes sind
find ~/project/files -type f \( -name "*.jpg" -o -name "*.png" \) -size +0c
Um alle Dateien im documents-Verzeichnis zu finden, die keine PDF-Dateien sind:
find ~/project/files/documents -type f ! -name "*.pdf"
Erstellen wir einige zusätzliche Dateien, um eine komplexere Suche zu demonstrieren:
## Create some large and small image files
echo "This is a large JPG file" > ~/project/files/images/large_image.jpg
for i in {1..50}; do
echo "Adding content to make this file larger." >> ~/project/files/images/large_image.jpg
done
touch ~/project/files/images/empty_image.png
Jetzt finden wir alle Bilddateien (JPG oder PNG), die entweder leer sind ODER größer als 1 KB:
find ~/project/files/images -type f \( -name "*.jpg" -o -name "*.png" \) \( -size 0 -o -size +1k \)
Dieser komplexe Befehl zeigt, wie Sie ausgefeilte Suchkriterien erstellen können, indem Sie mehrere Bedingungen mit logischen Operatoren kombinieren.
Zusammenfassung
In diesem Lab haben Sie gelernt, wie Sie den Linux-find-Befehl verwenden können, um effizient nach Dateien anhand verschiedener Kriterien zu suchen. Hier ist eine Zusammenfassung dessen, was Sie erreicht haben:
- Sie haben die grundlegende Syntax des
find-Befehls gelernt und wie man nach Dateien und Verzeichnissen sucht. - Sie haben entdeckt, wie man mit der Option
-nameund Platzhaltern nach Dateien anhand des Namens sucht. - Sie haben untersucht, wie man mit der Option
-sizein verschiedenen Einheiten nach Dateien anhand ihrer Größe sucht. - Sie haben mehrere Suchkriterien mit logischen Operatoren (UND, ODER, NICHT) kombiniert, um komplexe Suchen durchzuführen.
Der find-Befehl ist eines der leistungsfähigsten und flexibelsten Tools in Linux zur Suche nach Dateien. Wenn Sie weiterhin mit Linux-Systemen arbeiten, werden Sie diese Fähigkeiten als unschätzbar für die Dateiverwaltung, die Fehlerbehebung und die Automatisierung von Aufgaben erachten.
Wichtige Punkte, die Sie sich merken sollten:
- Verwenden Sie
-type ffür Dateien und-type dfür Verzeichnisse. - Verwenden Sie
-namefür Groß-/Kleinschreibung-sensible Dateinamensuchen und-inamefür Groß-/Kleinschreibung-unabhängige Suchen. - Verwenden Sie
-sizemit geeigneten Einheiten (c, k, M, G), um Dateien anhand ihrer Größe zu finden. - Kombinieren Sie Kriterien mit logischen Operatoren, um komplexe Suchmuster zu erstellen.
Diese Fähigkeiten werden Ihnen helfen, in jeder Linux-Umgebung effizient durch Dateien zu navigieren und diese zu verwalten.



