Linux-Dateisuche

LinuxLinuxBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

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 find verwenden
  • 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.

Dies ist ein Guided Lab, das schrittweise Anweisungen bietet, um Ihnen beim Lernen und Üben zu helfen. Befolgen Sie die Anweisungen sorgfältig, um jeden Schritt abzuschließen und praktische Erfahrungen zu sammeln. Historische Daten zeigen, dass dies ein Labor der Stufe Anfänger mit einer Abschlussquote von 93% ist. Es hat eine positive Bewertungsrate von 96% von den Lernenden erhalten.

Grundlagen des find-Befehls erkunden

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 dem find die 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/files gibt an, wo die Suche beginnen soll
  • -type f teilt find mit, 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" teilt find mit, Dateinamen zu finden, die mit .txt enden
  • 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:

  • n ist 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 n mit + 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:

  1. Sie haben die grundlegende Syntax des find-Befehls gelernt und wie man nach Dateien und Verzeichnissen sucht.
  2. Sie haben entdeckt, wie man mit der Option -name und Platzhaltern nach Dateien anhand des Namens sucht.
  3. Sie haben untersucht, wie man mit der Option -size in verschiedenen Einheiten nach Dateien anhand ihrer Größe sucht.
  4. 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 f für Dateien und -type d für Verzeichnisse.
  • Verwenden Sie -name für Groß-/Kleinschreibung-sensible Dateinamensuchen und -iname für Groß-/Kleinschreibung-unabhängige Suchen.
  • Verwenden Sie -size mit 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.