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

Find-Befehl in Linux (Dateien und Verzeichnisse suchen)

Der find command ist eines der leistungsstärksten Tools im Arsenal der Linux-Systemadministratoren. Es sucht nach Dateien und Verzeichnissen in einer Verzeichnishierarchie basierend auf einem vom Benutzer angegebenen Ausdruck und kann eine vom Benutzer angegebene Aktion für jede übereinstimmende Datei ausführen.

Sie können den find verwenden Befehl, um nach Dateien und Verzeichnissen basierend auf ihren Berechtigungen, Typ, Datum, Eigentümerschaft, Größe und mehr zu suchen. Es kann auch mit anderen Tools wie grep kombiniert werden oder sed .

find Befehlssyntax #

Die allgemeine Syntax für find Befehl lautet wie folgt:

find [options] [path...] [expression]
  • Die options Das Attribut steuert die Behandlung der symbolischen Links, die Debugging-Optionen und die Optimierungsmethode.
  • Der path... -Attribut definiert das Startverzeichnis oder die Startverzeichnisse, in denen find die Dateien durchsuchen wird.
  • Der expression -Attribut besteht aus Optionen, Suchmustern und Aktionen, die durch Operatoren getrennt sind.

Um nach Dateien in einem Verzeichnis zu suchen, ruft der Benutzer den find auf Der Befehl muss Leseberechtigungen für dieses Verzeichnis haben.

Schauen wir uns das folgende Beispiel an:

find -L /var/www -name "*.js"
  • Die Option -L (Optionen) teilt dem find mit Befehl, symbolischen Links zu folgen.
  • Der /var/www (Pfad…) gibt das Verzeichnis an, das durchsucht wird.
  • Der (Ausdruck) -name "*.js sagt find um Dateien zu suchen, die mit .js enden (JavaScript-Dateien).

Dateien nach Namen suchen #

Das Suchen von Dateien anhand des Namens ist wahrscheinlich die häufigste Verwendung von find Befehl. Um eine Datei anhand ihres Namens zu finden, verwenden Sie den -name Option gefolgt vom Namen der gesuchten Datei.

Zum Beispiel, um nach einer Datei mit dem Namen document.pdf zu suchen im /home/linuxize Verzeichnis verwenden Sie den folgenden Befehl:

find /home/linuxize -type f -name document.pdf

Um eine Suche ohne Berücksichtigung der Groß-/Kleinschreibung durchzuführen, ändern Sie den -name Option mit -iname :

find /home/linuxize -type f -iname document.pdf

Der obige Befehl stimmt mit „Document.pdf“, „DOCUMENT.pdf“ usw. überein.

Dateien nach Erweiterung # suchen

Das Suchen nach Dateien anhand der Erweiterung ist dasselbe wie das Suchen nach Dateien anhand des Namens. Zum Beispiel, um alle Dateien zu finden, die mit .log.gz enden innerhalb von /var/log/nginx Verzeichnis würden Sie Folgendes eingeben:

find /var/log/nginx -type f -name '*.log.gz'

Es ist wichtig zu erwähnen, dass Sie das Muster entweder in Anführungszeichen setzen oder das Sternchen * maskieren müssen Symbol mit Backslash \ damit es nicht von der Shell interpretiert wird, wenn Sie das Platzhalterzeichen verwenden.

Um alle Dateien zu finden, die nicht mit dem Regex *.log.gz übereinstimmen Sie können den -not verwenden Möglichkeit. Zum Beispiel, um alle Dateien zu finden, die nicht auf *.log.gz enden Sie würden verwenden:

find /var/log/nginx -type f -not -name '*.log.gz'

Dateien nach Typ # suchen

Manchmal müssen Sie möglicherweise nach bestimmten Dateitypen wie regulären Dateien, Verzeichnissen oder symbolischen Links suchen. Unter Linux ist alles eine Datei.

Um nach Dateien basierend auf ihrem Typ zu suchen, verwenden Sie den -type Option und einen der folgenden Deskriptoren, um den Dateityp anzugeben:

  • f :eine normale Datei
  • d :Verzeichnis
  • l :Symbolischer Link
  • c :Zeichengeräte
  • b :Geräte blockieren
  • p :Named Pipe (FIFO)
  • s :Steckdose

Um beispielsweise alle Verzeichnisse im aktuellen Arbeitsverzeichnis zu finden, würden Sie Folgendes verwenden:

find . -type d

Das übliche Beispiel wäre die rekursive Änderung der Website-Dateiberechtigungen auf 644 und Verzeichnisberechtigungen auf 755 mit dem chmod Befehl:

find /var/www/my_website -type d -exec chmod 0755 {} \;find /var/www/my_website -type f -exec chmod 0644 {} \;

Dateien nach Größe suchen #

Um Dateien basierend auf der Dateigröße zu finden, übergeben Sie die -size Parameter zusammen mit den Größenkriterien. Sie können die folgenden Suffixe verwenden, um die Dateigröße anzugeben:

  • b :512-Byte-Blöcke (Standard)
  • c :Bytes
  • w :Zwei-Byte-Wörter
  • k :Kilobyte
  • M :Megabyte
  • G :Gigabyte

Der folgende Befehl findet alle Dateien von genau 1024 Bytes innerhalb von /tmp Verzeichnis:

find /tmp -type f -size 1024c

Der find Mit dem Befehl können Sie auch nach Dateien suchen, die größer oder kleiner als eine bestimmte Größe sind.

Im folgenden Beispiel suchen wir nach allen Dateien kleiner als 1MB innerhalb des aktuellen Arbeitsverzeichnisses. Beachten Sie das Minus - Symbol vor dem Größenwert:

find . -type f -size -1M

Wenn Sie nach Dateien mit einer Größe von mehr als 1MB suchen möchten , dann müssen Sie das Pluszeichen + verwenden Symbol:

find . -type f -size +1M

Sie können sogar nach Dateien innerhalb eines Größenbereichs suchen. Der folgende Befehl findet alle Dateien zwischen 1 und 2MB :

find . -type f -size +1M -size 21M

Dateien nach Änderungsdatum # suchen

Der find Der Befehl kann auch nach Dateien basierend auf ihrer letzten Änderung, ihrem letzten Zugriff oder ihrer letzten Änderungszeit suchen.

Verwenden Sie wie bei der Suche nach Größe die Plus- und Minuszeichen für „größer als“ oder „kleiner als“.

Nehmen wir an, Sie haben vor ein paar Tagen eine der Dovecot-Konfigurationsdateien geändert, aber Sie haben vergessen, welche. Sie können alle Dateien unter /etc/dovecot/conf.d einfach filtern Verzeichnis, das mit .conf endet und wurde in den letzten fünf Tagen geändert:

find /etc/dovecot/conf.d -name "*.conf" -mtime 5

Hier ist ein weiteres Beispiel für das Filtern von Dateien basierend auf dem Änderungsdatum mit dem -daystart Möglichkeit. Der folgende Befehl listet alle Dateien in /home auf Verzeichnis, das geändert wurde 30 oder vor mehr Tagen:

find /home -mtime +30 -daystart

Dateien nach Berechtigungen suchen #

Die -perm Mit dieser Option können Sie anhand der Dateiberechtigungen nach Dateien suchen.

Zum Beispiel, um alle Dateien mit den Berechtigungen von genau 775 zu finden innerhalb von /var/www/html Verzeichnis würden Sie verwenden:

find /var/www/html -perm 644

Sie können dem numerischen Modus das Minus - voranstellen oder Schrägstrich / .

Beim Schrägstrich / als Präfix verwendet wird, müssen mindestens für eine Kategorie (Benutzer, Gruppe oder andere) mindestens die entsprechenden Bits gesetzt sein, damit eine Datei übereinstimmt.

Betrachten Sie den folgenden Beispielbefehl:

find . -perm /444

Der obige Befehl gleicht alle Dateien mit Leseberechtigungen ab, die entweder für Benutzer, Gruppen oder andere festgelegt wurden.

Wenn minus - als Präfix verwendet wird, müssen mindestens die angegebenen Bits gesetzt sein, damit die Datei übereinstimmt. Der folgende Befehl sucht nach Dateien, die Lese- und Schreibrechte für den Eigentümer und die Gruppe haben und von anderen Benutzern gelesen werden können:

find . -perm -664

Dateien nach Eigentümer # suchen

Um Dateien zu finden, die einem bestimmten Benutzer oder einer bestimmten Gruppe gehören, verwenden Sie den -user und -group Optionen.

Zum Beispiel, um nach allen Dateien und Verzeichnissen zu suchen, die dem Benutzer linuxize gehören , würden Sie Folgendes ausführen:

find / -user linuxize

Hier ist ein reales Beispiel. Angenommen, Sie möchten alle Dateien finden, die dem Benutzer www-data gehören und ändern Sie den Besitz der übereinstimmenden Dateien von www-data zu nginx :

find / -user www-data -type f  -exec chown nginx {} \;

Dateien suchen und löschen #

Um alle übereinstimmenden Dateien zu löschen, hängen Sie den -delete an Option am Ende des Übereinstimmungsausdrucks.

Stellen Sie sicher, dass Sie diese Option nur verwenden, wenn Sie sicher sind, dass das Ergebnis mit den Dateien übereinstimmt, die Sie löschen möchten. Es ist immer eine gute Idee, die übereinstimmenden Dateien auszudrucken, bevor Sie -delete verwenden Option.

Zum Beispiel, um alle Dateien zu löschen, die mit .temp enden aus /var/log/ , würden Sie verwenden:

find /var/log/ -name `*.temp` -delete
Verwenden Sie das -delete Option mit äußerster Vorsicht. Der find Befehl als Ausdruck ausgewertet wird und wenn Sie den -delete hinzufügen Option zuerst, löscht der Befehl alles unterhalb der von Ihnen angegebenen Startpunkte.

Wenn es um Verzeichnisse geht, find kann nur leere Verzeichnisse löschen, genauso wie rmdir .

Schlussfolgerung #

Wir haben Ihnen gezeigt, wie Sie find verwenden Befehl mit verschiedenen Optionen und Kriterien.

Dieser Artikel soll Ihnen ein grundlegendes Verständnis dafür vermitteln, wie Sie Dateien auf Ihren Linux-Systemen finden. Sie können auch find besuchen Manpage und lesen Sie mehr über alle anderen leistungsstarken Optionen von find Befehl.

Wenn Sie Fragen oder Anmerkungen haben, hinterlassen Sie bitte unten einen Kommentar.


Linux
  1. Finden Sie Dateien und Verzeichnisse unter Linux mit dem Befehl find

  2. So finden Sie die wichtigsten Verzeichnisse und Dateien (Festplattenspeicherplatz) in Linux heraus

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

  4. So löschen Sie Dateien und Verzeichnisse in Linux über die Befehlszeile

  5. Kopieren Sie Dateien und Verzeichnisse unter Linux

So komprimieren Sie Dateien und Verzeichnisse unter Linux

So verschieben Sie Dateien und Verzeichnisse in Linux (mv-Befehl)

Rm-Befehl unter Linux

3 Möglichkeiten, Dateien und Verzeichnisse in Linux zu finden

Finden Sie Dateien und Verzeichnisse unter Linux ganz einfach

4 Möglichkeiten zum Übertragen von Dateien und Verzeichnissen unter Linux