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″>
ab
cab
runlevel
runlevel1, runlevel2, runlevel6
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.