So finden Sie Dateien in Linux mithilfe der Befehlszeile

find ist ein Befehl zum rekursiven Filtern von Objekten im Dateisystem basierend auf einem einfachen Bedingungsmechanismus. Verwenden Sie find, um nach einer Datei oder einem Verzeichnis in Ihrem Dateisystem zu suchen. Mit dem Flag -exec können Dateien innerhalb desselben Befehls gefunden und sofort verarbeitet werden.,

Find Linux Files by Name or Extension

Use find from the command line to locate a specific file by name or extension., Das folgende Beispiel sucht nach *.err Dateien im /home/username/ Verzeichnis und allen Unterverzeichnissen:

find /home/username/ -name "*.err"

Sie sollten eine ähnliche Ausgabe in Ihrer Konsole sehen:

 /home/username/example.errThe matching file in the /home/username/ directory is "example.err"

Common Linux Find Commands and Syntax

Die find Der Befehl hat normalerweise die folgende Form:

find options starting/path expression
  • Das Attribut options steuert das Verhalten und die Optimierungsmethode des Prozesses find.,
  • Das Attribut starting/path definiert das Verzeichnis der obersten Ebene, in dem find mit dem Filtern beginnt.
  • Das Attribut expression steuert die Tests, die die Verzeichnishierarchie durchsuchen, um eine Ausgabe zu erzeugen.

Suchen Sie eine Datei in Linux Mit dem Dateinamen

Um eine Datei mit dem Dateinamen zu finden, verwenden Sie die Syntax find -name filename. Wenn Sie den Pfad weglassen, wird über die gesamte Festplatte nach der Datei gesucht., Sie können beispielsweise eine Datei mit dem Namen example.err in Ihrem Verzeichnis /home/username mit dem folgenden Befehl finden:

find -name example.err

Sie sollten eine ähnliche Ausgabe sehen:

 ./username/example.err

Suchen Sie eine Datei in Ihrem aktuellen Verzeichnis Mit dem Befehl Find

Nehmen Sie ein Blick auf die Beispielverzeichnisstruktur und Dateien. Sie werden in den Beispielen dieses Leitfadens erwähnt.,möchten Sie die Datei example.err innerhalb des Verzeichnisses oder eines seiner Unterverzeichnisse finden, können Sie den folgenden Befehl ausgeben:

find . -name example.err

Ihre Ausgabe ähnelt der folgenden:

 ./example.err./directory_1/example.err

Die Ausgabe spiegelt directory_1 Verzeichnisstruktur wider:

Suchen Sie Bilddateien in Linux Über die Befehlszeile

Verweisen auf die Dateistruktur Im vorherigen Abschnitt befindet sich ein Bild mit dem Namen image01.png, das sich im Stammverzeichnis befindet (/)s der Verzeichnisstruktur.,

Um die Datei image01.png zu finden, führen Sie den folgenden Befehl find aus, der alle .png Dateien findet, die im Verzeichnis / gespeichert sind.

find -name *.png

Sie sollten eine ähnliche Ausgabe sehen:

 ./image01.png

Ändern Sie den Bilddateityp und suchen Sie nach .jpg Dateien im Stammverzeichnis (/):

find -name *.jpg

Die Ausgabe ähnelt dem Beispiel., In der Beispielverzeichnisstruktur im vorherigen Abschnitt können Sie den Speicherort der Datei anzeigen.

 ./web_files/unnamed.jpg

Suchen Sie eine leere Datei in Ihrem Verzeichnis Mithilfe der Befehlszeile

Um eine leere Datei in Ihrem Verzeichnis mithilfe der Befehlszeile zu finden, geben Sie den folgenden Befehl aus:

find . -type f -empty

Wenn keine Ausgabe zurückgegeben wird, befindet sich keine leere Datei in Ihrem aktuellen Verzeichnis.

Optionen und Optimierungen zum Auffinden von Dateien in Linux über die Befehlszeile

Die Standardkonfiguration für find ignoressymbolic Links., Wenn Sie möchten, dass find symbolischen Links folgt und diese zurückgibt, fügen Sie dem Befehl die Option -L hinzu, wie unten gezeigt:

find -O3 -L /var/www/ -name "*.html"

Dieser Befehl aktiviert die maximale Optimierungsstufe (-O3) und erlaubt find symbolische Links (-L). find durchsucht den gesamten Verzeichnisbaum unter /var/www/ nach Dateien, die mit .htmlenden.,

find optimiert die Filterung Strategie, um die Leistung zu erhöhen. Drei vom Benutzer auswählbare Optimierungsstufen werden als -O1, -O2 und -O3angegeben. Die-O1 – Optimierung ist die Standardeinstellung und zwingtfind, basierend auf dem Dateinamen zu filtern, bevor alle anderen Tests ausgeführt werden.,

Die Optimierung auf der Ebene -O2 priorisiert Filename-Filter wie in -O1 und führt dann alle Filterung vom Dateityp aus, bevor Sie mit anderen ressourcenintensiveren Bedingungen fortfahren. Level -O3 Durch die Optimierung kann find die strengste Optimierung durchführen und alle Tests basierend auf ihrem relativen Aufwand und der Wahrscheinlichkeit ihres Erfolgs neu anordnen.,

Command Description
-O1 Filter based on filename first (default).
-O2 File name first, then file-type.,
-O3 Allow find automatisch neu, um die Suche basierend auf die effiziente Nutzung von Ressourcen und Wahrscheinlichkeit. erfolg
-maxdepth X Suche aktuelle verzeichnis sowie alle unterverzeichnisse X ebenen tiefe.
-iname – Suche ohne Bezug zum text case.,
-not Return only results that do not match the test case.
-type f Search for files.
-type d Search for directories.,

Suchen Sie Dateien in Linux nach Änderungszeit Über die Befehlszeile

Der Befehl find kann eine Verzeichnishierarchie basierend auf dem Zeitpunkt filtern, zu dem eine Datei zuletzt geändert wurde., Der folgende Befehl findet beispielsweise eine Datei mit der Erweiterung .err, die in den letzten 7 Tagen geändert wurde:

find / -name "*err" -mtime -7

Der Beispielbefehl gibt die folgende Ausgabe zurück:

Verwenden Sie Grep, um Dateien in Linux mithilfe der Befehlszeile

zu finden Der Befehl find kann die Verzeichnishierarchie nur basierend auf der name und Metadaten. Wenn Sie nach dem Inhalt der Datei suchen müssen, verwenden Sie ein Tool wiegrep., Betrachten Sie das folgende Beispiel:

find . -type f -exec grep "test" '{}' \; -print

Dieser Befehl durchsucht jedes Objekt in der aktuellen Verzeichnishierarchie (.), das eine Datei ist (-type f) und führt dann den Befehl grep "test" für jede Datei aus, die die Bedingungen erfüllt. Die übereinstimmenden Dateien werden auf dem Bildschirm gedruckt (-print). Die geschweiften Klammern ({}) sind ein Platzhalter für die Ergebnisse der Suche nach Übereinstimmungen., Die {} sind in einfache Anführungszeichen gesetzt ('), um zu vermeiden, dass grep ein fehlerhafter Dateiname übergeben wird. Der Befehl -exec wird mit einem Semikolon () beendet, das maskiert werden sollte (\;), um eine Interpretation durch die Shell zu vermeiden.

Die im Beispiel verwendete Datei (example.err) enthält Text mit der Aufschrift „test“., Wenn Sie den Beispielbefehl ausführen, wird eine ähnliche Ausgabe angezeigt:

Grep identifizierte jede Datei im aktuellen Arbeitsverzeichnis, die die Zeichenfolge „test“enthält.,

Hinweis

Vor der find – Implementierung der -exec – Option können Sie mit dem Befehl xargs eine ähnliche Ausgabe wie im obigen Beispiel generierenxargsBefehl:

find . -type f -print | xargs grep "test"

Dateien mit dem Befehl Find unter Linux verarbeiten und suchen

Die Option -exec führt Befehle für jedes Objekt aus, das mit dem Ausdruck find übereinstimmt., Betrachten Sie das folgende Beispiel:

find . -name "example.err" -exec chmod o+r '{}' \;

Dies filtert jedes Objekt in der aktuellen Hierarchie (.) nach Dateien mit dem Namen rc.conf und führt den Befehl chmod o+r aus, um die Dateiberechtigungen des Befehls find zu ändern.

Der Befehl example führt die Option -exec im Stammverzeichnis des Prozesses find aus. Verwenden Sie -execdir, um den angegebenen Befehl in dem Verzeichnis auszuführen, in dem sich die Übereinstimmung befindet., Dies kann Sicherheitsbedenken lindern und zu einer besseren Leistung für einige Vorgänge führen.

Die Optionen -exec oder -execdir werden ohne weitere Eingabeaufforderungen ausgeführt. Wenn Sie vor der Aktion aufgefordert werden möchten, ersetzen Sie -exec durch -ok oder -execdir durch -okdir.

So finden und löschen Sie Dateien über die Linux-Befehlszeile

Vorsicht

Verwenden Sie diese Option mit äußerster Vorsicht.,

Fügen Sie am Ende eines Übereinstimmungsausdrucks die Option -delete hinzu, um alle übereinstimmenden Dateien zu löschen. Verwenden Sie diese Option, wenn Sie sicher sind, dass die Ergebnisse nur mit den Dateien übereinstimmen, die Sie löschen möchten.

Im folgenden Beispiel findet find rekursiv alle Dateien in der Hierarchie ab dem aktuellen Verzeichnis und löscht alle Dateien, die mit der Endung .err extension:

find . -name "*.err" -delete

Hast du noch ein paar Fragen?,

Treten Sie unserer Community bei und stellen Sie Ihre Fragen an andere Linode-und Linux-Enthusiasten, um Ihnen zu helfen.

Verwandte Fragen:

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.