Dieses Tutorial konzentriert sich auf das Auffinden von Dateien unter Linux mit dem Befehl Suchen und Suchen.

Als Systemadministrator ist es eine sehr häufige Aufgabe, nach einer bestimmten Datei in Ihrem Dateisystem zu suchen.

Es kann jedoch manchmal schwierig sein, Dateien auf einem Linux-Dateisystem zu finden, insbesondere wenn Sie Dutzende verschiedener Benutzer haben.

Es gibt zwei Befehle, mit denen Sie Ihr Ziel erreichen können : Suchen und Finden.,

In diesem Tutorial werden wir sehen, wie Sie diese Befehle effektiv verwenden und wie sie abgestimmt werden können, um das zu erreichen, wonach wir suchen.

Inhaltsverzeichnis

Suchen Sie Dateien mit dem Befehl Find

Die erste Möglichkeit, Dateien auf einem Linux-Host zu finden und zu lokalisieren, besteht darin, den Befehl find zu verwenden.,

Standardmäßig ist der Befehl find auf allen Distributionen verfügbar und hat die folgende Syntax

$ find <options> <path> <expression>

Quick tip: Haben Sie Probleme, sich daran zu erinnern, ob Pfad oder Ausdruck zuerst kommen?

Denken sie daran, dass für die grEP ist Ausdruck Pfad, und finden ist das gegenteil, so Pfad Ausdruck!

Find ist ein ziemlich leistungsfähiger Befehl, da er viel mehr Optionen als der locate-Befehl hat.

Hier sind alle Möglichkeiten der Find-Funktion unter Linux.,

Suchen Sie Dateien mit find by filename

Die häufigste Verwendung der find-Funktion besteht darin, Dateien anhand ihres Dateinamens zu suchen.

$ find <path> -name <pattern>

Der Hauptunterschied zwischen find und locate bei der Suche nach Dateien besteht darin, dass find nach Dateinamen sucht, während locate nach Pfaden zur Datei sucht.

Wenn wir beispielsweise zu dem zuvor verwendeten Runlevel-Beispiel zurückkehren, können Sie mit dem Befehl find nach Runlevel-Dateien suchen.,

$ find / -name runlevel*

Was ist das „2> /dev/null“ Teil?

Ich habe die Fehlerausgabe mithilfe der Ausgabeumleitung nach /dev/null umgeleitet, um Fehlermeldungen auf der Konsole zu vermeiden.

Suchen Sie Dateien mit find by filetype

Wie wir zuvor in unserem Artikel über Hard-und Softlinks besprochen haben, werden Dateien zugewiesen Dateitypen und es wird verwendet, um sie zu unterscheiden.,

Hier ist eine Zusammenfassung aller unter Linux verwendeten Dateitypen.

  • f : eine Standarddatei
  • d : ein Ordner oder Verzeichnis
  • l : ein symbolischer Link oder Softlink
  • b : Geräte blockieren (z. B. eine Festplatte)
  • c : Zeichengeräte (serielle Ports, Soundkarten)
  • p : named pipe
  • s : Socket

Wenn Sie alle diese Dateitypen kennen, können Sie jetzt nach dateien nach Dateityp mit dem Befehl suchen.

$ find <path> -type <filetype>

Wenn wir beispielsweise nach allen symbolischen Links auf dem Host suchen, geben wir den folgenden Befehl aus.,

$ find / -type l

Parameter können kombiniert werden, z. B. wenn ich nach allen symbolischen Links suche, deren Dateinamen mit “ enden.service“ (um beispielsweise alle systemd-Dienste zu isolieren) würde ich den folgenden Befehl ausführen.

$ find / -type l -name *.service

Suchen Sie Dateien mit einem Muster (für Erweiterungen)

Ähnlich wie beim Befehl locate können Sie Dateien unter Linux mithilfe eines Musters finden.

Zur Erinnerung ist ein Muster eine Zeichenfolge, die Globbing-Zeichen enthält (z. B.*,?,, oder Bereiche).

Diese Option ist besonders nützlich, wenn Sie versuchen, Dateien mit einer Erweiterung zu finden, z. B. Javascript-Dateien.

Um Dateien unter Linux mithilfe eines Musters zu finden, führen Sie den folgenden Befehl aus

$ find <path> -name ".<extension>"
$ find / -name "*.js"

Dateien unter Linux nach Eigentümer

h3>

Manchmal möchten Sie Dateien isolieren, die von einem bestimmten Benutzer erstellt wurden.

Wenn Sie einen Benutzer auf Ihrem Host löschen, können Sie beispielsweise alle Dateien löschen, die diesem Benutzer zugeordnet sind.,

Manchmal erstellen Benutzer Dateien aus ihrem Home-Verzeichnis und das Löschen eines User-Home-Verzeichnisses reicht nicht aus.

Um Dateien zu finden, die von einem bestimmten Benutzer unter Linux erstellt wurden, führen Sie den folgenden Befehl aus

$ find <path> -user <user>

Um beispielsweise alle Dateien zu finden, die „john“ auf meinem Host gehören, würde ich den folgenden Befehl ausführen.

$ find / -user john

Was ist, wenn ich alle Dateien von john mit einem einfachen Befehl löschen möchte?,

Es kann leicht mit dem Delete-Flag erreicht werden.

$ find / -user john -delete

Suchen Sie Dateien unter Linux nach Berechtigungen

Mit dem Befehl suchen können Sie auch Dateien finden und suchen, die bestimmte Berechtigungen auf Ihrem Host haben.

$ find <path> -perm <permissions>

Zur Erinnerung: So funktionieren Dateiberechtigungen unter Linux.

Um alle Dateien zu finden, die volle Berechtigungen haben (a 777 angesichts der binären Notation), können Sie den folgenden Befehl ausführen.,

$ find / -perm 777

Es kann sehr praktisch sein, wenn Sie aus Sicherheitsgründen überprüfen möchten, ob keine Dateien mit vollständigen Berechtigungen auf Ihrem System konfiguriert sind.

Suchen Sie Dateien mit find by size

Eine weitere sehr praktische Möglichkeit, Dateien unter Linux zu finden und zu finden, besteht darin, den Befehl find mit der Option size.

Mit der Option Größe können Sie nach Dateien suchen, die genau der angegebenen Größe entsprechen, größer als eine bestimmte Größe oder kleiner als eine bestimmte Größe.,

Um nach Dateien nach Größe zu suchen, verwenden Sie den folgenden Befehl

$ find <path> -size <size>

Die Größe wird durch die folgenden Präfixe definiert :

  • c: bytes
  • b: 512-Byte-Blöcke
  • k: Kilobyte
  • M: Megabyte
  • G: Gigabyte

Sie können geben Sie ein „+“ an, wenn Sie nach Dateien suchen, die größer als die angegebene Größe sind.,

Um beispielsweise Dateien mit mehr als 1 GB auf Ihrem System zu finden, führen Sie den folgenden Befehl aus

$ find / -size +1G

Um Dateien mit weniger als 10 MB auf Ihrem System zu finden, führen Sie den folgenden Befehl aus

$ find / -size -10M

Um nach Dateien zu suchen, die genau der in der Abfrage angegebenen Größe entsprechen, sollten Sie dem Befehl keine Plus-oder Minus-Präfixe anhängen.

$ find / -size 1024k

Der gerade definierte Befehl findet alle Dateien mit einer Größe von genau 1024 KB auf Ihrem Host.,

Suchen Sie Dateien unter Linux nach Änderungsdatum

Mit der Suche können Sie auch Dateien finden, die ein Änderungsdatum haben, neu oder nicht.

Dieser Befehl ist sehr praktisch und wird häufig von Systemadministratoren verwendet, um Dateien oder Verzeichnisse zu finden, die kürzlich geändert wurden.

Um mit find by modification date nach Dateien zu suchen, führen Sie den folgenden Befehl aus

$ find <path> -mtime <time>

Wobei time die geänderten Dateien darstellt 24*<time> vor Stunden.

Infolgedessen wird die Zeit in Tagen ausgedrückt.,

Ähnlich wie bei der Größenoption können Sie einen Operator „plus“ oder „minus“ an die Zeit anhängen, um nach Dateien zu suchen, die vor mehr als <geändert wurden> vor Tagen oder weniger als <Zeit> vor Tagen.

Um beispielsweise nach Dateien zu suchen, die vor genau 3 Stunden geändert wurden, führen Sie den folgenden Befehl aus.,

$ find / -mtime 3

Um Dateien zu finden, die vor mehr als einer Woche geändert wurden, führen Sie den folgenden Befehl aus

$ find / -mtime +7

Um Dateien zu finden, die vor weniger als zwei Tagen geändert wurden, führen Sie den folgenden Befehl aus

$ find / -mtime -2

Suchen Sie Dateien mit dynamischer Tiefe

Wie Sie wahrscheinlich bemerkt haben, tutorial, wir geben Beispiele für Dateien suchen ab dem Stammverzeichnis.

Folglich werden alle Ordner rekursiv durchsucht.,

Wir können jedoch die Anzahl der Verzeichnisse einschränken, die rekursiv von einem Verzeichnis aus gereist sind, dies wird als Tiefe bezeichnet.

Um die Dateisuche auf eine bestimmte Tiefe zu beschränken, führen Sie die folgende Abfrage aus

$ find <path> -maxdepth <depth>

Als Beispiel können Sie die Dateisuche auf das aktuelle Verzeichnis beschränken, wobei keine untergeordneten Verzeichnisse durchsucht werden.

$ find / -maxdepth 1

Sie können diesen Befehl natürlich mit dem Flag name kombinieren, um im aktuellen Verzeichnis nach Dateien mit einem bestimmten Namen zu suchen.,

$ find . -maxdepth 1 -name *.tar

Verketten von Suchen mit-exec

In einigen Fällen können Sie nützlich finden, um den Befehl find mit dem Befehl exec zu verketten.

Die exec-Option kann verwendet werden, um mehrere Befehle miteinander zu verketten : das Ergebnis des ersten als Eingabe des zweiten.,

Angenommen, Sie möchten alle Dateien finden, die vor weniger als einer Minute geändert wurden

$ find /home/user -mmin -1./file1

Angenommen, Sie möchten alle Dateien löschen, die vor weniger als einer Minute geändert wurden.

Mit dieser Syntax können Sie den Befehl find mit der Option-exec verketten.

$ find /home/user -mmin -1 -exec echo rm -f '{}' \;

Wir“ echo “ zuerst die Ergebnisse, wie wir sicherstellen möchten, dass wir die richtigen Dateien löschen.,

Wenn Sie bereit sind, diese Dateien zu löschen, entfernen Sie einfach den Befehl echo.

$ find /home/user -mmin -1 -exec rm -f '{}' \;

Suchen Sie Dateien unter Linux mit dem Befehl Locate

Eine weitere gute Möglichkeit, Dateien unter Linux zu finden und zu lokalisieren, ist der Befehl locate.

Voraussetzungen

Wenn der Befehl locate auf Ihrem System nicht verfügbar ist, lesen Sie den nächsten Abschnitt, um locate auf Ihrem System auszuführen.,

a-Installieren von Locate auf APT-und RPM-basierten Distributionen

Um locate zu installieren, benötigen Sie Sudo-Berechtigungen auf Ihrem Linux-Host.

Um zu überprüfen, ob locate auf Ihrem Host installiert ist, führen Sie den Befehl locate in der Befehlszeile aus.,

$ locate

Wenn locate auf Ihrem Computer installiert ist, wird erwartet, dass ein Ausdruck

Wenn locate nicht auf Ihrem Host installiert ist, wird eine Fehlermeldung angezeigt

Um locate unter Ubuntu 18.04 und Debian 10 zu installieren, führen Sie den folgenden Befehl aus.,

$ sudo apt-get install mlocate

Wenn Sie sich auf einer CentOS-oder Fedora-basierten Distribution befinden, führen Sie den folgenden Befehl aus, um locate zu installieren.

$ sudo yum install mlocate

b – Aktualisieren Ihrer mlocate-Datenbank

Die locate-Funktion arbeitet mit einer lokalen Datenbank, die in Ihrem Dateisystem gespeichert ist und jeden einzelnen Dateinamen Ihres Hosts speichert.

Wenn Sie einen locate-Befehl ausführen, sucht locate in der von updatedb vorbereiteten Datenbank nach der gesuchten Datei.

In regelmäßigen Abständen aktualisiert ein Cron-Job das mlocate.db-Datei für Sie für die neuesten Einträge zu suchen.,

Die Datenbank befindet sich unter /var/lib/mlocate/mlocate.db standardmäßig und die updatedb-Konfigurationsdatei wird unter /etc/updatedb gespeichert.conf.

Im Moment können Sie die Standardoptionen belassen und einen einfachen updatedb-Befehl ausführen, damit Ihre Datenbank aktualisiert wird.

$ sudo updatedb

Suchen Sie Dateien mit einem Namensmuster

Der grundlegendste Weg, Dateien unter Linux zu finden, besteht darin, dem Befehl locate ein Muster bereitzustellen.,

Standardmäßig ist die Syntax des locate-Befehls die folgende

$ locate ... ...

Wenn Sie nach einer bestimmten Konfigurationsdatei auf Ihrem System suchen, können Sie diese auf einfache Weise finden, indem Sie dem locate-Befehl den vollständigen Dateinamen angeben.

$ locate updatedb.conf

Wie Sie sehen können, gibt der Befehl locate die vollständigen Pfade zu der gesuchten Datei zurück.,

Suchen Sie Dateien in eingeschränkten Verzeichnissen

Manchmal haben Sie möglicherweise keinen Zugriff auf einige Verzeichnisse auf Ihrem System.

Infolgedessen können Sie die darin befindlichen Dateien nicht finden.

Nehmen wir das Beispiel eines verbotenen Ordners mit einer Datei namens „restricted-file“.

Um Dateien in eingeschränkten Verzeichnissen zu finden, müssen Sie den Befehl locate mit sudo-Rechten ausführen.,

$ sudo locate restricted-file

Suchen Sie Dateien mit einem Muster

Mit dem Befehl locate können Sie“ patterns “ in Form von Globbing-Zeichen bereitstellen.

Globbing-Zeichen, auch Platzhalter genannt, sind Zeichen, die verwendet werden, um einen oder mehrere Einträge mit einem vereinfachten Ausdruck abzugleichen.

Am beliebtesten ist das“*“, das mit jedem Zeichen übereinstimmt, einschließlich none.

Hier ist eine Übersichtstabelle für Globbing-Zeichen und ihre Funktionen.,6934f1″>

devdevco, matches one character given in the bracket ab aab, bab cab matches one character from the (locale-dependent) range given in the bracket runlevel runlevel1, runlevel2, runlevel6 runlevels, runlevelo

As an example, here’s a way to locate all text files on your system.,

$ locate *.txt

Suchen Sie Dateien mit einem regulären Ausdruck

Wie auf der offiziellen Manpage für locate angegeben, akzeptiert der Befehl locate ein Muster als Eingabe.

Dies bedeutet, dass Sie dem Befehl locate einen regulären Ausdruck bereitstellen können.

Um Dateien mit einem regulären Ausdruck zu finden und zu lokalisieren, verwenden Sie die Option –regex für den Befehl locate.,

$ locate --regex <regex>

Um beispielsweise alle Dateien zu isolieren, die mit runlevel gefolgt von einer Zahl beginnen, führen Sie den folgenden Befehl aus.

$ locate --regex runlevel+

Bei der Verwendung von regexes, es gibt einen wichtigen Punkt, den Sie beachten sollten, beim Auffinden von Dateien.

Der Befehl locate sucht nach Pfaden zu Dateien in seiner lokalen Datenbank.,

Daher sollten Sie bei der Suche nach Dateien beachten, dass Ihr regulärer Ausdruck mit dem Pfad zur Datei und nicht nur mit dem Dateinamen übereinstimmen muss.

Wenn ich beispielsweise nach Dateien suche, die mit „Ausführen“ beginnen, werden keine Ergebnisse zurückgegeben, da der Pfad zur Datei mit „/usr“beginnt.

Suchen Sie Dateien mit der Option Groß-und Kleinschreibung

Wenn Sie nach Dateien in Ihrem Dateisystem suchen, sind Sie möglicherweise nicht sicher, wie eine bestimmte Datei benannt wurde.,

Wurde es in Groß-oder Kleinbuchstaben geschrieben? Enthält es überhaupt Großbuchstaben?

Um Dateien mit einer Option ohne Groß-und Kleinschreibung zu finden und zu lokalisieren, hängen Sie die Option-i an den Befehl locate an.,

$ locate -i <file_pattern>

Dateien nach Inhalt suchen mit grep

In einigen Fällen können Sie an der Suche nach Dateien interessiert sein, die mit einem bestimmten Satzwort übereinstimmen, das sich IN der Datei befindet.

Dies kann beispielsweise passieren, wenn Sie versuchen, die Datei mit bestimmten Protokollereignissen zu finden.,

Die erste Möglichkeit, nach Dateien zu suchen, die einem bestimmten Wort entsprechen, ist die Verwendung des Befehls grep

$ grep -r <pattern> <path>

Hinweis : Vergessen Sie nicht die Option“- r“, wenn Sie Dateien durch ganze Verzeichnisse durchsuchen.

Zum Beispiel., wenn Sie alle Dateien mit „error“ in ihrem Inhalt suchen, die sich in Ihrem Home-Verzeichnis befinden, geben Sie

$ grep -r error /home/user

In einigen Fällen möchten Sie möglicherweise Dateien mit einem regulären Ausdruck finden.

Um Dateien mit einem regulären Ausdruck zu finden, verwenden Sie die Option“- E“.,

$ grep -r -E <expression> <path>

Angenommen, Sie möchten die Datei, die dem Muster ‚abc‘ entspricht, in eine Ihrer Dateien eingeben

$ grep -r -E "abc.*" --color /home/user

Hinweis : Die Farboption wird verwendet, um Übereinstimmungen mit dem Befehl grep hervorzuheben.,

Dateien suchen, mit denen

Eine weitere großartige Möglichkeit, Dateien unter Linux zu finden, ist die Verwendung des Befehls which.

Dieser Befehl wird verwendet, um die Dateien zu lokalisieren, die einem bestimmten Befehl zugeordnet sind.

Dies kann sehr praktisch werden, wenn Sie nicht wissen, wo Sie Ihre Binärdateien für einen Befehl gespeichert haben oder wenn Sie einen Befehl suchen müssen, um ihn Ihrem PFAD hinzuzufügen.,

$ which <command>

Um beispielsweise nach Dateien zu suchen, die dem Befehl“ ls“zugeordnet sind, geben Sie

$ which ls/usr/bin/ls

ein Wie Sie sehen, erhalten Sie den vollständigen Pfad zur Datei.

Suchen Sie Binärdateien mit whereis

In ähnlicher Weise ist es vollständig möglich, mit dem Befehl whereis nach Dateien zu suchen.

Der Befehl “ whereis „kann als Obermenge des Befehls“ which „angesehen werden:“ whereis “ liefert Informationen über den Namen des Befehls, den Speicherort der Datei sowie den Speicherort der Handbuchseiten.,

Um whereis auszuführen, geben Sie einfach „whereis“ ein und hängen Sie den Namen Ihres Befehls an.

$ whereis lsls: /usr/bin/ls /usr/share/man/man1/ls.1.gz

Ziemlich praktisch!

Fazit

Im heutigen Tutorial haben Sie gelernt, wie Sie Dateien unter Linux mit zwei wichtigen Befehlen suchen und finden können : Suchen und Finden.

Selbst wenn Sie einzeln dargestellt wurden, sollten Sie daran denken, dass sie kombiniert werden können, um die gesuchten Dateien noch genauer angeben zu können.

Wie immer, wenn Sie sich für die Linux-Systemadministration interessieren, haben wir auf unserer Website einen vollständigen Abschnitt zu Linux.,

As always, here is a short video on the subject in case you prefer Youtube videos.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.