Dieser Artikel stellt zwei nützliche Tools zum Suchen nach Dateien im Linux-Dateisystem vor. Der erste ist der find
Befehl, der in jeder Linux-Distribution zu finden ist, und der zweite ist locate
, die eine Installation benötigt.
Suchbefehl
Der Find-Befehl ist standardmäßig Teil von Linux. Es bietet mehrere Parameter, um Ihre Suche zu verfeinern.
Nach Namen suchen
Der einfachste Suchbefehl ist die Suche nach Namen, wo Sie sich befinden:
$ find -name "FILE_NAME"
Sie können das Verzeichnis angeben, in dem Sie nach der Datei suchen möchten:
$ find /home -name my_file.txt
$ find / -name my_other_file.txt
Beachten Sie, dass bei diesem Befehl zwischen Groß- und Kleinschreibung unterschieden wird. Wenn Sie die Groß-/Kleinschreibung ignorieren möchten, verwenden Sie:
$ find -iname "FILE_NAME"
Inverse Suche
Falls Sie nach Dateien suchen möchten, die nicht dem angegebenen Muster entsprechen, können Sie die Suchparameter negieren, indem Sie den -not
verwenden Parameter oder \!
. Zum Beispiel:
$ find -not -name "FILE_NAME_TO_AVOID"
or
$ find \! -name "FILE_NAME_TO_AVOID"
Nach Dateityp suchen
Die file
Mit dem Befehl können Sie auch nach Dateitypen suchen. Einige gebräuchliche Dateitypdeskriptoren sind:
f
:normale Dateid
:Verzeichnisl
:Symbollinkc
:Zeichengeräteb
:Geräte blockieren
Hinter dem -type
steht der gewünschte Dateityp Attribut.
Um beispielsweise alle JSON-Dateien unter etc
zu finden Verzeichnis:
$ find /etc -type f -name "*.json"
Nach Dateigröße suchen
Es gibt auch einen Parameter, der verwendet wird, um das Suchergebnis abhängig von der Größe der Dateien zu filtern:-size
.
Für die Größeneinheiten können Sie die folgenden Suffixe verwenden:
c
:Bytesk
:KilobyteM
:MegabyteG
:Gigabyteb
:512-Byte-Blöcke
Und um anzugeben, ob es sich um eine genaue Größe, ein Kleiner als oder ein Größer als handelt, verwenden Sie die folgenden Präfixe:
- Genaue Suche :kein Präfix
- Kleiner als :
-
Präfix - Größer als :
+
Präfix
So finden Sie beispielsweise alle 3-Gigabyte-Dateien im Home-Verzeichnis:
$ find /home -size 3G
Für alle Dateien unter 3 Gigabyte:
$ find /home -size -3G
Dateien über 3 Gigabyte:
$ find /home -size +3G
Suche nach Zeit
Sie können Dateien auch nach dem Zeitpunkt ihres letzten Zugriffs, ihrer Änderung oder Änderung durchsuchen.
- Zugriffszeit :
-atime
zum letzten Mal, als die Datei gelesen wurde. - Änderungszeit :
-mtime
zum letzten Mal wurden die Dateiinhalte geändert. - Uhrzeit ändern :
-ctime
zum letzten Mal, wo die Inode-Metadaten der Datei geändert wurden.
Es ist auch möglich, mit einer Referenzdatei zu vergleichen, um die neueren zurückzugeben:
$ find / -newer file_name
Für die Zeiten sind die Parameter in Tagen angegeben . Es können dieselben Präfixe wie bei der Größensuche verwendet werden:
$ find /home -mtime 3
$ find /home -atime -2
$ find /home -ctime +5
Um Dateien anhand der Zeit in Minuten zu finden, können Sie Folgendes verwenden:
$ find /home -mmin 3
Nach Eigentümer und Berechtigungen suchen
Es gibt auch Parameter, um Dateien nach ihren Besitzern zu finden (-user
und -group
) und deren Berechtigungen (-perm
):
$ find /home -user my_user
$ find /home -group my_group
$ find /home -perm 777
Suchtiefe definieren
Bei der Suche unter einem Verzeichnis wird der find
Der Befehl gibt alle Dateien in diesem Verzeichnis zurück, auch wenn sie sich in anderen Unterverzeichnissen befinden. Um diese Tiefe zu steuern, können Sie eine maximale Tiefe, eine minimale Tiefe oder beides definieren.
Um beispielsweise nur im obersten Verzeichnis und einer Ebene von Unterverzeichnissen zu suchen, können Sie -maxdepth
festlegen Parameter auf 2:
$ find -maxdepth 2 -name my_file
Um die Mindesttiefe zu definieren, wo find
sollten Sie suchen, verwenden Sie die -mindepth
Parameter:
$ find -mindepth 5 -name my_file
Diese Parameter können kombiniert werden:
$ find -mindepth 4 -maxdepth 7 -name my_file
Befehle für Ergebnisse ausführen
Wie in den Tiefenbefehlen zu sehen, alle find
Parameter können kombiniert werden, um sehr spezifische Ergebnisse zu erhalten. Wenn Sie die gewünschten Ergebnisse erhalten, können Sie Befehle über sie ausführen, indem Sie -exec
verwenden Parameter.
Beim Kombinieren von Suchparametern können Sie auch den -and
verwenden und -or
Optionen zur Personalisierung Ihrer Suchkriterien. Wenn keiner von ihnen verwendet wird, werden die -and
Option ist die Standardeinstellung.
Zum Beispiel, um die Berechtigungen für alle Dateien unter /my_dir
zu ändern Verzeichnisse, die derzeit 777-Berechtigungen bis 664 haben, verwenden Sie Folgendes:
$ cd /my_dir
$ find . -type f -perm 777 -exec chmod 664 {} \;
Ortungstool
Der locate
Der Befehl ist eine Alternative für find
. Der Unterschied besteht darin, dass es eine Datenbank der Dateien im Dateisystem verwendet, damit es schneller ausgeführt werden kann. Um die Datei locate
zu installieren Werkzeug, das Sie verwenden können:
- Für Ubuntu/Debian-Distributionen:
$ sudo apt install mlocate`
- Für CentOS/RHEL-Distributionen:
$ sudo yum install mlocate`
Locate verwendet einen Cron-Job, um die Datenbank täglich zu aktualisieren, aber sie kann manuell aktualisiert werden mit:
$ sudo updatedb
Für die Suche nach dem „Basisnamen“, also dass die Abfrage nur im Dateinamen und nicht im Dateipfad enthalten ist, verwenden Sie das -b
Flagge:
$ locate -b name
Um Dateien zu finden, die noch existieren (nach der letzten updatedb
Aufruf) verwenden Sie das -e
Flagge:
$ locate -e name
Verwenden Sie für Statistiken aus der generierten Datenbank:
$ locate -S
Schlussfolgerung
Die Suche nach Dateien in der Linux-Befehlszeile kann schwierig sein. Die in diesem Artikel vorgestellten Tools bieten eine einfache Möglichkeit, Dateien zu handhaben und zu finden. Durch das Verständnis der verschiedenen Parameter kann die Suche so spezifisch sein, wie man es sich wünscht.
Verwenden Sie die Registerkarte „Feedback“, um Kommentare abzugeben oder Fragen zu stellen. Sie können auch ein Gespräch mit uns beginnen.