Der find-Befehl ist ein leistungsstarkes Suchprogramm, das verwendet wird, um Dateien in Linux- und Unix-ähnlichen Betriebssystemen zu finden. Es kann Dateien und Verzeichnisse basierend auf verschiedenen Kriterien wie Name, Erweiterung, Typ, Änderungs- und Erstellungsdatum, Berechtigungen, Größe, Eigentümer finden.
Find kann auch eine befehlsbasierte Aktion ausführen, z. B. Dateien suchen und Löschen, Zählen usw. ausführen.
Dieses Tutorial konzentriert sich darauf, die Verwendung des Find-Befehls zu erklären und Sie durch Beispiele zu führen.
Syntax:
Die grundlegende Syntax von find Befehlsverwendung ist wie folgt:
find <directory-to-search> [OPTIONS] <find name,file,extension>
Das -H
und -L
Optionen werden verwendet, um symbolische Links während der Suche zu verwalten, -P (symbolischen Links nicht folgen) und -L (symbolischen Links folgen).
1. Suchen Sie eine Datei anhand des Namens
Um eine Datei anhand ihres Namens zu finden verwenden Sie den find-Befehl mit -name
Option.
Angenommen, Sie möchten nach der Datei mit dem Namen „nginx.yaml“ im Dokumentenverzeichnis suchen, können Sie den folgenden Befehl ausführen:
$ find /Documents -name nginx.yaml
Dadurch wird die Datei mit dem Namen „nginx.yaml“ in Documents/ und allen Unterverzeichnissen gefunden:
Um außerdem nach der Datei „nginx.yaml“ im aktuellen Verzeichnis und allen Unterverzeichnissen zu suchen, führen Sie Folgendes aus:
$ find -name nginx.yaml
Der Punkt (.) nach dem Suchbefehl gibt an, dass die Suche im aktuellen Verzeichnis beginnen soll:
$ find . -name nginx.yaml
2. Dateien nach Erweiterung suchen
Wenn Sie nach allen Dateien nach Erweiterung suchen möchten , können Sie den find-Befehl mit -name
verwenden Option gefolgt von *.
Beispielsweise können Sie im Home-Verzeichnis nach allen Dateien mit der Erweiterung „.png“ suchen, indem Sie den folgenden Befehl ausführen:
$ find $HOME -name *.png
3. Nur Verzeichnisse finden
Wenn Sie nur Verzeichnisse suchen möchten , können Sie den find-Befehl mit -type d
ausführen Option.
Angenommen, Sie möchten nach allen Verzeichnissen im Ordner Documents/ suchen, lassen Sie uns Folgendes ausführen:
$ find /Documents -type d
4. Nur Dateien suchen
Es gibt viele verschiedene Arten von Dateien in Linux, wie z. B.:Verzeichnisse, symbolische Links, Sockets, reguläre Dateien usw. Wenn Sie nur nach regulären Dateien suchen möchten , können Sie den Befehl find mit der Option '-type f' ausführen.
Angenommen, Sie finden nur Dateien im aktuellen Verzeichnis, führen wir beispielsweise Folgendes aus:
$ find . -type f
5. Suchen und löschen
In manchen Situationen möchten Sie finden und löschen Dateien/Verzeichnisse, die nicht mehr benötigt werden, können Sie den Suchbefehl mit der Option '-delete' ausführen.
Wenn Sie beispielsweise alle Bilder mit der Erweiterung *.png im Ordner Documents/ finden und diese entfernen:
$ find /Documents -name *.png -delete
6. Finden Sie Dateien mit bestimmten Berechtigungen
Wenn Sie nach allen Dateien suchen möchten, die bestimmte Berechtigungen haben , können Sie den Linux-Befehl find mit der Option '-perm' verwenden.
Um beispielsweise Dateien mit der Berechtigung „755“ zu finden, führen wir Folgendes aus:
$ find . -type f -perm 775 -exec ls -l {} \;
7. Finden Sie Dateien und Verzeichnisse nach Datum/Uhrzeit
Mit dem Linux-Befehl find können Sie anhand des Datums-/Zeitstempels nach Dateien und Verzeichnissen suchen.
Sie können den Befehl find mit der Option '-mtime -N' verwenden, um Dateien zu finden, die zuletzt vor 'N' Tagen geändert wurden. Um beispielsweise nach allen Dateien zu suchen, die in den letzten 2 Tagen im aktuellen Verzeichnis geändert wurden, führen wir Folgendes aus:
$ find . -type f -mtime -2 -exec ls -l {} \;
Eine andere Möglichkeit, den Befehl find zum Suchen nach Dateien/Verzeichnissen nach Datum/Uhrzeit zu verwenden, ist die Verwendung der Option „-newerXY“. Wo X und Y sein können:
a
- die Zugriffszeit der Referenzdatei
B
- die Geburtszeit der Referenzdatei
c
- die Änderungszeit des Inode-Status der Referenzdatei
m
- die Änderungszeit der Referenzdatei
t
- refer wird direkt als Zeit interpretiert
Um beispielsweise nach allen Dateien zu suchen, die am 4. Juli 2020 im aktuellen Verzeichnis geändert wurden, führen wir Folgendes aus:
$ find . -type f -newermt 2020-07-04 -ls
8. Finden Sie Dateien und Verzeichnisse nach Größe
Mit dem Linux-Suchbefehl können Sie nach Dateien/Verzeichnissen nach Größe suchen, indem Sie den Befehl mit der Option „-size“ ausführen.
Angenommen, Sie möchten Dateien finden, die größer als 1 GB sind, können Sie den folgenden Befehl ausführen:
$ find . -type f -size +1G
Einige praktische Beispiele
01) Finde leere Dateien/Verzeichnisse
Diese Ausgabe listet alle leeren Dateien und Ordner im aktuellen Verzeichnis und den Unterverzeichnissen auf:
$ find . -empty -ls
02) Finden Sie alle .jpg-Dateien
$ find . -name *.jpg
03) Finden Sie alle Verzeichnisse mit 644-Berechtigung
Die Ausgabe zeigt Ihnen alle Ordner im aktuellen Verzeichnis oder Unterverzeichnis, die die 644-Berechtigung haben:
$ find . -type d -perm 644 -ls
04) Finden Sie Dateien, die einem bestimmten Benutzer gehören
Wenn Sie im aktuellen Verzeichnis nach allen Dateien suchen möchten, die dem Benutzer "cas" gehören, können Sie dies wie folgt tun:
$ find . -user cas -ls
05) Dateien nach Inode-Nummer suchen
Um eine Datei anhand ihrer Inode-Nummer zu suchen, können Sie find mit -inum
verwenden Möglichkeit. Zum Beispiel:
$ find -inum 534937
06) Anzahl der Dateien zählen
$ find -type f -exec basename {} \; | wc -l
07) Anzahl der Verzeichnisse zählen
$ find -type d -exec basename {} \; | wc -l
08) Suche nach Dateien mit einer bestimmten Tiefe
Angenommen, Sie möchten nach der Datei „Dockerfile“ im HOME-Ordner und seinen Unterverzeichnissen und nicht in den Unterverzeichnissen der nächsten Ebene suchen, müssen Sie die Option „-maxdepth“ wie folgt auf 2 setzen:
$ find $HOME -maxdepth 2 -name Dockerfile
Schlussfolgerung
Ein weiteres leistungsstarkes Tool ist der fd-Befehl, der eine Alternative zum find-Befehl darstellt.
In diesem Tutorial haben wir gelernt, wie man den Linux-Befehl find verwendet, um nach Dateien und Verzeichnissen zu suchen. Danke fürs Lesen und bitte hinterlassen Sie Ihren Vorschlag im Kommentarbereich unten.