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

Finden Sie Dateien und Verzeichnisse unter Linux ganz einfach

Dieses Tutorial konzentriert sich darauf, wie man Dateien unter Linux mit den Befehlen find und locate findet.

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

Es kann jedoch manchmal schwierig sein, Dateien unter Linux zu finden Dateisystem, besonders wenn Sie Dutzende verschiedener Benutzer haben.

Es gibt zwei Befehle, die Ihnen dabei helfen können, Ihr Ziel zu erreichen:finden und lokalisieren.

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

Suchen Sie Dateien mit dem Befehl Suchen

Die erste Möglichkeit, Dateien auf einem Linux-Host zu finden, ist die Verwendung des Befehls find.

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

$ find <options> <path> <expression>

Kurztipp :Haben Sie Schwierigkeiten, sich daran zu erinnern, ob Pfad oder Ausdruck zuerst kommt?

Denken Sie daran für die grEP ist E Ausdruck P ath, und finden ist das Gegenteil, also P at E Ausdruck!

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

Hier sind alle Möglichkeiten der Suchfunktion unter Linux.

Dateien finden mit Suche nach Dateiname

Die häufigste Verwendung der Suchfunktion ist das Auffinden von Dateien anhand ihres Dateinamens .

$ 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 zum Beispiel zu dem zuvor verwendeten Runlevel-Beispiel zurückkehren, erfahren Sie hier, wie Sie mit dem Befehl find nach Runlevel-Dateien suchen.

$ find / -name runlevel*

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

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

Suchen Sie Dateien mit der Suche nach Dateityp

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

Hier ist eine Zusammenfassung aller Dateitypen, die unter Linux verwendet werden.

  • 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 :benannte Pipe
  • s :Steckdose

Da Sie all diese Dateitypen kennen, können Sie jetzt nach Dateien nach Dateityp suchen mit dem find-Befehl.

$ find <path> -type <filetype>

Zum Beispiel, wenn wir nach allen symbolischen Links suchen auf dem Host würden wir den folgenden Befehl ausgeben.

$ find / -type l

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

$ find / -type l -name *.service

Dateien anhand eines Musters finden (für Erweiterungen)

Ähnlich wie mit dem Befehl locate können Sie Dateien unter Linux unter Verwendung eines Musters finden

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

Diese Option eignet sich besonders, wenn Sie versuchen, Dateien mit einer Erweiterung zu finden, beispielsweise Javascript-Dateien.

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

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

Dateien Dateien unter Linux vom Besitzer

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

Wenn Sie beispielsweise einen Benutzer auf Ihrem Host löschen, möchten Sie möglicherweise alle mit diesem Benutzer verknüpften Dateien löschen.

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

Um also 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 nun, wenn ich alle Dateien, die John gehören, mit einem einfachen Befehl löschen möchte?

Dies kann einfach mit dem Lösch-Flag erreicht werden.

$ find / -user john -delete

Dateien unter Linux nach Berechtigungen finden

Mit dem Befehl find können Sie auch Dateien suchen und lokalisieren, 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 (eine 777 bei 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 auf Ihrem System keine Dateien mit vollen Berechtigungen konfiguriert sind.

Dateien finden mit Find by Size

Ein weiterer sehr praktischer Weg, um Dateien unter Linux zu finden und zu lokalisieren, ist der Find-Befehl mit der Größenoption.

Mit der Größenoption können Sie nach Dateien suchen, die genau die Größe haben, die Sie angeben, 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 ein „+“ angeben, 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 auf Ihrem System zu finden, die kleiner als 10 MB sind , führen Sie den folgenden Befehl aus

$ find / -size -10M

Schließlich, um nach Dateien zu suchen, die genau sind der in der Abfrage angegebenen Größe sollten Sie keine Plus- oder Minus-Präfixe an den Befehl anhängen.

$ find / -size 1024k

Der gerade definierte Befehl findet auf Ihrem Host alle Dateien, die genau 1024 Kb groß sind.

Dateien unter Linux nach Änderungsdatum finden

Mit der Suche können Sie auch Dateien mit einem Änderungsdatum finden, 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.

Führen Sie den folgenden Befehl aus, um mithilfe der Suche nach Änderungsdatum nach Dateien zu suchen

$ find <path> -mtime <time>

Wobei time die Dateien darstellt, die vor 24* geändert wurden .

Folglich wird die Zeit in Tagen ausgedrückt.

Ähnlich wie bei der Größenoption können Sie ein „Plus“ anhängen “ oder ein „Minus ”-Operator an die Zeit, um nach Dateien zu suchen, die vor mehr als

Zum Beispiel, um nach Dateien zu suchen, die vor genau 3 Stunden geändert wurden , würden Sie den folgenden Befehl ausführen.

$ find / -mtime 3

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

$ 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

Dateien mit dynamischer Tiefe finden

Wie Sie wahrscheinlich bemerkt haben, geben wir seit Beginn dieses Tutorials Beispiele für Dateisuchen ab dem Stammverzeichnis.

Als Folge werden alle Ordner rekursiv durchsucht.

Wir können jedoch die Anzahl der rekursiv durchlaufenen Verzeichnisse von einem Verzeichnis aus einschränken, dies wird Tiefe genannt.

Einschränken der Dateisuche auf eine bestimmte Tiefe , führen Sie die folgende Abfrage aus

$ find <path> -maxdepth <depth>

Als Beispiel sehen Sie hier, wie Sie die Suche nach Dateien auf das aktuelle Verzeichnis beschränken können, ohne dass untergeordnete Verzeichnisse durchsucht werden.

$ find / -maxdepth 1

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

$ find . -maxdepth 1 -name *.tar

Suchen mit -exec verketten

In manchen Fällen kann es hilfreich sein, den find-Befehl mit dem exec-Befehl zu verketten.

Die Option exec kann verwendet werden, um mehrere Befehle miteinander zu verketten:das Ergebnis des ersten als Eingabe für den zweiten nehmen.

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

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

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

Sie können den Find-Befehl mit der Option -exec unter Verwendung dieser Syntax verketten.

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

Wir „echo“ natürlich zuerst die Ergebnisse, da wir sicherstellen wollen, dass wir die richtigen Dateien löschen.

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

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

Finden Sie Dateien unter Linux mit dem Locate-Befehl

Eine weitere großartige Möglichkeit, Dateien unter Linux zu finden und zu lokalisieren, ist die Verwendung von locate Befehl.

Voraussetzungen

Wenn der locate-Befehl auf Ihrem System nicht verfügbar ist, lesen Sie unbedingt den nächsten Abschnitt, um den locate-Befehl auf Ihrem System zum Laufen zu bringen.

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 locate-Befehl in der Befehlszeile aus.

$ locate

Wenn locate auf Ihrem Computer installiert ist, erwartet es die Bereitstellung eines Ausdrucks

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

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

$ sudo apt-get install mlocate

Wenn Sie eine auf CentOS oder Fedora basierende Distribution verwenden, führen Sie den folgenden Befehl aus, um locate.

zu installieren
$ sudo yum install mlocate

b – Aktualisieren Ihrer mlocate-Datenbank

Der Ort Funktion arbeitet mit einer lokalen Datenbank, die auf Ihrem Dateisystem gespeichert ist und jeden einzelnen Dateinamen Ihres Hosts speichert.

Wenn Sie einen locate-Befehl ausführen, sucht locate in der Datenbank, die von updatedb erstellt wurde für die gesuchte Datei.

Regelmäßig ein Cron-Job aktualisiert die mlocate.db Datei, damit Sie nach den neuesten Einträgen suchen können.

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

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

$ sudo updatedb

Suchen Sie Dateien mit einem Namensmuster

Die einfachste Art, Dateien unter Linux zu finden, besteht darin, ein Muster für den Befehl locate bereitzustellen .

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

$ locate [OPTION]... [PATTERN]...

Wenn Sie nach einer bestimmten Konfigurationsdatei auf Ihrem System suchen, können Sie sie leicht finden, indem Sie den vollständigen Dateinamen für den Befehl locate angeben.

$ locate updatedb.conf

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

Dateien in eingeschränkten Verzeichnissen suchen

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

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

Nehmen wir das Beispiel eines verbotenen Ordners, der eine Datei mit dem Namen „restricted-file“ enthält “.

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

$ sudo locate restricted-file

Suchen Sie Dateien anhand eines Musters

Mit dem Befehl locate können Sie „Muster“ 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.

Die beliebteste ist die „* “, das mit jedem Zeichen übereinstimmt, einschließlich keinem.

Hier ist eine zusammenfassende Tabelle für Globbing-Zeichen und ihre Funktionen.

Platzhalter Beschreibung Beispiel Übereinstimmungen Entspricht nicht
* entspricht einer beliebigen Anzahl beliebiger Zeichen einschließlich keiner devco* devconnected, devcoco, devco.com devdevco,
[abc] entspricht einem in der Klammer angegebenen Zeichen [ab]ab aab, bab cab
[a-z] entspricht einem Zeichen aus dem (vom Gebietsschema abhängigen) Bereich, der in der Klammer angegeben ist runlevel[0-9] runlevel1, runlevel2, runlevel6 Runlevel, Runlevelo

Hier ist ein Beispiel, wie Sie alle Textdateien auf Ihrem System finden können.

$ locate *.txt

Dateien mit einem regulären Ausdruck suchen

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

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

Um Dateien mit einem Regex zu finden und zu lokalisieren, verwenden Sie –regex Option für den Befehl locate.

$ locate --regex <regex>

Um beispielsweise alle Dateien zu isolieren, die mit Runlevel gefolgt von einer Zahl beginnen, würden Sie den folgenden Befehl ausführen.

$ locate --regex runlevel[0-9]+

Bei der Verwendung von regulären Ausdrücken gibt es einen wichtigen Punkt, den Sie beim Auffinden von Dateien beachten sollten.

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

Bei der Suche nach Dateien sollten Sie sich daher bewusst sein, 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 „run“ beginnen, werden keine Ergebnisse zurückgegeben, da der Pfad zur Datei mit „/usr“ beginnt.

Suchen Sie Dateien ohne Berücksichtigung der Groß-/Kleinschreibung

Bei der Suche nach Dateien in Ihrem Dateisystem sind Sie sich möglicherweise nicht sicher, wie eine bestimmte Datei benannt wurde.

Wurde es groß oder klein geschrieben? Enthält es überhaupt Großbuchstaben?

Um Dateien mit einer Option zu finden, bei der die Groß-/Kleinschreibung nicht beachtet wird, hängen Sie die Option -i an Ihren Befehl locate an.

$ locate -i <file_pattern>

Suchen Sie Dateien nach Inhalt mit grep

In einigen Fällen möchten Sie möglicherweise nach Dateien suchen, die mit einem bestimmten Wort oder Satz übereinstimmen, der sich INNERHALB der Datei befindet.

Dies kann beispielsweise passieren, wenn Sie versuchen, die Datei zu finden, die bestimmte Protokollereignisse enthält.

Die erste Möglichkeit, nach Dateien zu suchen, die mit einem bestimmten Wort übereinstimmen, ist die Verwendung des grep-Befehls

$ grep -r <pattern> <path>

Hinweis :Vergessen Sie nicht die Option „-r“, wenn Sie Dateien in ganzen Verzeichnissen durchsuchen.

Zum Beispiel. Wenn Sie alle Dateien mit „Fehler“ in ihrem Inhalt suchen, die sich in Ihrem Home-Verzeichnis befinden, würden Sie

eingeben
$ 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>

Nehmen wir zum Beispiel an, Sie möchten die Datei finden, die mit dem „abc“-Muster in einer Ihrer Dateien übereinstimmt, Sie würden

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

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

Dateien finden mit which

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

Der which-Befehl wird verwendet, um die Dateien zu finden, die einem bestimmten Befehl zugeordnet sind.

Dies kann sehr praktisch sein, 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 zu Ihrem PATH hinzuzufügen.

$ which <command>

Um beispielsweise nach Dateien zu suchen, die mit dem Befehl „ls“ verknüpft sind, würden Sie

eingeben
$ which ls
/usr/bin/ls

Wie Sie sehen können, erhalten Sie den vollständigen Pfad zur Datei.

Suchen Sie Binärdateien mit whereis

Ebenso ist es möglich, mit dem whereis-Befehl nach Dateien zu suchen.

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

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

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

Ziemlich praktisch!

Schlussfolgerung

Im heutigen Tutorial haben Sie gelernt, wie Sie Dateien unter Linux mit zwei wichtigen Befehlen finden und lokalisieren können:locate und find.

Auch wenn Optionen einzeln angeboten wurden, sollten Sie bedenken, dass sie kombiniert werden können, um die gesuchten Dateien noch genauer spezifizieren zu können.

Wenn Sie an Linux-Systemadministration interessiert sind, haben wir wie immer einen kompletten Bereich auf unserer Website, der Linux gewidmet ist.


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. Finden Sie die größten Dateien und Verzeichnisse in Linux

  5. So finden und löschen Sie leere Verzeichnisse und Dateien in Linux

So benennen Sie Dateien und Verzeichnisse in Linux um

Ls-Befehl in Linux (Dateien und Verzeichnisse auflisten)

So komprimieren Sie Dateien und Verzeichnisse unter Linux

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

Zwei Befehle zum einfachen Auffinden von Dateien und Verzeichnissen in Debian 11

So finden und löschen Sie leere Verzeichnisse in Linux