Linux: Dateien mit dem Find-Befehl suchen
Der find
-Befehl in Linux ist ein leistungsstarkes Werkzeug, mit dem Sie nach Dateien und Verzeichnissen in einer gegebenen Verzeichnishierarchie basierend auf verschiedenen Parametern suchen können. In diesem Tutorial werden wir untersuchen, wie man den find-Befehl und seine verschiedenen Optionen verwendet.
Grundlegende Syntax
Die grundlegende Syntax des find-Befehls lautet wie folgt:
find [Verzeichnis] [Ausdruck]
Hier ist [Verzeichnis]
das Verzeichnis, in dem Sie nach Dateien suchen möchten, und [Ausdruck]
ist das Suchkriterium, das Sie anwenden möchten. Der find-Befehl sucht nach Dateien und Verzeichnissen im angegebenen [Verzeichnis]
und seinen Unterverzeichnissen, die dem angegebenen [Ausdruck]
entsprechen.
Die Ausgabe des find-Befehls ist eine Liste von Dateien und Verzeichnissen, die den angegebenen Suchkriterien entsprechen. Wenn Sie zum Beispiel den folgenden Befehl ausführen:
find . -name "*.txt"
Erhalten Sie eine Liste aller Dateien mit der Erweiterung .txt
im aktuellen Verzeichnis und seinen Unterverzeichnissen:
./example.txt
./example2.txt
./subdir/example3.txt
Dateien nach Namen finden
Um nach einer Datei nach Namen zu suchen, verwenden Sie die Option -name
, gefolgt vom Namen der gesuchten Datei. Zum Beispiel, um nach einer Datei mit dem Namen beispiel.txt
im aktuellen Verzeichnis und seinen Unterverzeichnissen zu suchen, verwenden Sie den folgenden Befehl:
find . -name "beispiel.txt"
Dies sucht nach allen Dateien mit dem Namen "beispiel.txt" im aktuellen Verzeichnis und seinen Unterverzeichnissen.
Um nach allen Dateien mit einer bestimmten Erweiterung zu suchen, verwenden Sie die Option -name
, gefolgt vom Platzhalterzeichen *
und der Erweiterung, nach der Sie suchen. Zum Beispiel, um nach allen Dateien mit der Erweiterung .txt
im aktuellen Verzeichnis und seinen Unterverzeichnissen zu suchen, verwenden Sie den folgenden Befehl:
find . -name "*.txt"
Dies sucht nach allen Dateien mit der Erweiterung .txt
im aktuellen Verzeichnis und seinen Unterverzeichnissen.
Tatsächlich kann das Platzhalterzeichen *
in jedem Teil des Dateinamens verwendet werden. Zum Beispiel:
find . -name "beispiel*"
find . -name "*beispiel.txt"
find . -name "*beispiel.*"
Verzeichnisse finden
Um nach allen Verzeichnissen im aktuellen Verzeichnis und seinen Unterverzeichnissen zu suchen, verwenden Sie die Option -type
gefolgt von d
. Verwenden Sie zum Beispiel den folgenden Befehl, um nach allen Verzeichnissen im aktuellen Verzeichnis und seinen Unterverzeichnissen zu suchen:
find . -type d
Dies sucht nach allen Verzeichnissen im aktuellen Verzeichnis und seinen Unterverzeichnissen.
Dateien nach Änderungszeit finden
Um nach allen Dateien zu suchen, die innerhalb eines bestimmten Zeitraums geändert wurden, verwenden Sie die Option -mtime
gefolgt von der Anzahl der Tage. Wenn Sie nach Dateien suchen möchten, die innerhalb der letzten n
Tage geändert wurden, verwenden Sie eine negative Zahl -n
.
Verwenden Sie zum Beispiel den folgenden Befehl, um nach allen Dateien zu suchen, die innerhalb der letzten 7 Tage geändert wurden:
find . -mtime -7
find . -mtime -1w
Die Standardzeiteinheit für die Option -mtime
sind Tage.
Sie können auf macOS auch andere Zeiteinheiten verwenden:
s
- Sekundenm
- Minutenh
- Stundend
- Tagew
- Wochen
Sie können auch die Optionen
-atime
und-ctime
verwenden, um nach Dateien basierend auf ihrem Zugriffszeitpunkt und ihrem Erstellungszeitpunkt zu suchen.
Dateien nach Größe finden
Um nach allen Dateien zu suchen, die größer als eine bestimmte Größe sind, verwenden Sie die Option -size
, gefolgt von der Größe in Bytes mit einem +
-Zeichen. Um nach allen Dateien zu suchen, die kleiner als eine bestimmte Größe sind, verwenden Sie die Option -size
, gefolgt von der Größe in Bytes mit einem -
-Zeichen.
Zum Beispiel, um nach allen Dateien größer als 10MB
im aktuellen Verzeichnis und seinen Unterverzeichnissen zu suchen, verwenden Sie den folgenden Befehl:
find . -size +10M
Dies sucht nach allen Dateien größer als 10MB
im aktuellen Verzeichnis und seinen Unterverzeichnissen.
Die gängigen Einheiten für die Größe, die Sie verwenden können, sind:
c
- Bytesk
- Kilobytes (1024 Bytes)M
- Megabytes (1024 Kilobytes)G
- Gigabytes (1024 Megabytes)T
- Terabytes (1024 Gigabytes)P
- Petabytes (1024 Terabytes)
Kombinieren von Suchkriterien
Sie können mehrere Suchkriterien kombinieren, um Dateien zu finden, die bestimmten Bedingungen entsprechen. Zum Beispiel, um nach allen Dateien mit einer bestimmten Erweiterung zu suchen, die innerhalb der letzten 7 Tage geändert wurden, verwenden Sie den folgenden Befehl:
find . -name "*.txt" -type f -mtime -7
Dies sucht nach allen Dateien mit der Erweiterung .txt
, die innerhalb der letzten 7 Tage im aktuellen Verzeichnis und seinen Unterverzeichnissen geändert wurden.
Verwendung der Ausgabe des find-Befehls
Sie können die Ausgabe des find-Befehls auf verschiedene Arten verwenden. Hier sind einige Beispiele:
Um die Ausgabe des find-Befehls in einer Datei zu speichern, verwenden Sie den folgenden Befehl:
find . -name "*.txt" > files.txt
Dies speichert die Namen aller Dateien mit der Erweiterung .txt
in einer Datei namens files.txt
.
Um die Ausgabe des find-Befehls als Eingabe für einen anderen Befehl zu verwenden, verwenden Sie den Befehl xargs
.
Um beispielsweise alle Dateien mit einer bestimmten Erweiterung zu löschen, verwenden Sie den folgenden Befehl:
find . -name "*.txt" -type f | xargs rm
Um eine Aktion für jede vom find-Befehl gefundene Datei auszuführen, verwenden Sie die Option -exec
.
Um beispielsweise die Berechtigungen aller Dateien mit einer bestimmten Erweiterung zu ändern, verwenden Sie den folgenden Befehl:
find . -name "*.txt" -type f -exec chmod 644 {} \;
Die Syntax des -exec
-Arguments lautet:
-exec Befehl {} \;
Befehl
ist der Befehl, den Sie auf die vom find-Befehl gefundenen Dateien ausführen möchten.{}
ist ein Platzhalter, der durch den Namen der vom find-Befehl gefundenen Datei ersetzt wird.\;
wird verwendet, um den Befehl zu beenden und das Ende des-exec
-Arguments anzugeben.
Um die Anzahl der von dem Befehl find
gefundenen Dateien zu zählen, verwenden Sie den Befehl wc
. Verwenden Sie zum Beispiel den folgenden Befehl, um die Anzahl der Dateien mit einer bestimmten Erweiterung zu zählen:
find . -name "*.txt" -type f | wc -l
Fazit
Der Befehl find
in Linux ist ein leistungsstarkes Werkzeug, mit dem Sie nach Dateien und Verzeichnissen basierend auf verschiedenen Kriterien suchen können. Durch die Verwendung verschiedener Optionen und die Kombination von Suchkriterien können Sie schnell die benötigten Dateien und Verzeichnisse finden. Sie können auch die Ausgabe des find
-Befehls auf verschiedene Arten verwenden, um Aktionen auf den gefundenen Dateien auszuführen.