GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Verwenden Sie Find and Locate, um unter Linux nach Dateien zu suchen

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"

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 Datei
  • d :Verzeichnis
  • l :Symbollink
  • c :Zeichengeräte
  • b :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 :Bytes
  • k :Kilobyte
  • M :Megabyte
  • G :Gigabyte
  • b :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.


Linux
  1. So verwenden Sie den Befehl „find“, um nach mehreren Dateinamen (Erweiterungen) in Linux zu suchen

  2. Finden Sie Dateien und Verzeichnisse in Linux wie ein Profi

  3. Suchen Sie eine Datei mit den Befehlen Suchen und Suchen in Linux

  4. So verwenden Sie den Linux-Befehl find zum Suchen von Dateien

  5. Schnellere Alternativen zu finden und zu lokalisieren?

So verwenden Sie sed zum Suchen und Ersetzen von Zeichenfolgen in Dateien

So suchen Sie nach Dateien über die Linux-Befehlszeile

So installieren und verwenden Sie den Befehl locate unter Linux

So installieren und verwenden Sie Okteta für RAW-Datendateien unter Linux

Linux-Suche nach Zeichenfolgen in Ordnern und Dateien mit ack

Finden Sie Dateien und Verzeichnisse unter Linux ganz einfach