14 Praktische Beispiele für den Linux Find Befehl

Find ist einer der am häufigsten verwendeten Linux-Befehle und bietet eine Vielzahl von Funktionen in Form von Befehlszeilenoptionen. In diesem Tutorial, das sich an Anfänger richtet, werden wir die grundlegende Verwendung des Befehls sowie einige der nützlichen Befehlszeilenoptionen, die er bietet, diskutieren.

HINWEIS: Sofern nicht anders angegeben, verwenden wir die folgenden Dateien für alle unsere find-Befehlsbeispiele in diesem Tutorial.

Beispieldateien finden

1. Wie listet man alle Dateien im aktuellen Verzeichnis und seinen Unterverzeichnissen auf?

Mit dem Befehl find können Sie schnell alle Dateien im aktuellen Verzeichnis und seinen Unterverzeichnissen auflisten. Dazu müssen Sie den Befehl nur ohne Argumente oder Optionen ausführen.

find

Hier ist die Ausgabe in unserem Fall:

listet alle Dateien im aktuellen Verzeichnis und seinen Unterverzeichnissen auf.

Natürlich müssen Sie den vollständigen Pfad angeben, wenn das Verzeichnis, dessen Inhalt Sie auflisten möchten, nicht Ihr aktuelles Verzeichnis ist.

2. So suchen Sie eine Datei nach ihrem Namen

Wenn Sie möchten, können Sie mit dem Befehl find nach einer bestimmten Datei anhand ihres Namens suchen. Mit der Befehlszeilenoption -name können Sie dies tun. Hier ist die Syntax:

find [dir-path] -name [filename]

Der folgende Befehl durchsucht beispielsweise das aktuelle Verzeichnis nach einer Datei namens’testfile1.txt‘.

find . -name testfile1.txt

Hier ist die Ausgabe

Datei nach Name durchsuchen

Ebenso können Sie nach der Datei in einem anderen Verzeichnis suchen. Wenn das Verzeichnis ein Unterverzeichnis Ihres aktuellen Arbeitsverzeichnisses ist, dann müssen Sie nichts tun, da der Befehl find automatisch in allen Unterverzeichnissen sucht.

Aber wenn es sich um ein separates Verzeichnis handelt, dann müssen Sie den vollständigen Pfad angeben. Der folgende Befehl sucht beispielsweise nach der Datei im Heimatverzeichnis des Benutzers:

find /home -name testfile1.txt

3. Wie man nach Dateien eines bestimmten Typs sucht

Mit dem Befehl find können Sie auch nach gleichartigen Dateien in einem Verzeichnis (und seinen Unterverzeichnissen) suchen. Der folgende Befehl sucht beispielsweise nach allen.txt-Dateien in Ihrem aktuellen Arbeitsverzeichnis.

find . -name "*.txt"

Suche nach Dateien eines bestimmten Typs

Falls Sie es nicht wissen, * ist ein Platzhalterzeichen. Weitere Informationen zu Platzhalterzeichen finden Sie hier.

4. Wie man eine Groß-/Kleinschreibung unabhängige Suche durchführt

Standardmäßig führt der Befehl find eine groß- und kleinschreibungabhängige Suche durch (er behandelt Groß- und Kleinbuchstaben unterschiedlich). Aber wenn Sie möchten, können Sie den Befehl erzwingen, eine Groß-/Kleinschreibung unabhängige Suche durchzuführen. Dies kannst du mit der Kommandozeilenoption -iname tun.

find -iname [filename]

Zum Beispiel,

find -iname testfile1.txt

Hier ist die Ausgabe

Groß-/Kleinschreibung unabhängige Suche durchführen

5. Wie man nur Namen anzeigt, die nicht mit dem Suchmuster übereinstimmen.

Wenn Sie möchten, können Sie sogar den Befehl find aufrufen, die Dateinamen auszudrucken, die nicht mit dem Suchmuster übereinstimmen (auch bekannt als invertierte Suche). Sie können auf diese Funktion mit dem Operator ! oder -not zugreifen.

Zum Beispiel

find . -not -name “*.txt”

Hier ist die Ausgabe

Anzeigen von Namen, die nicht mit dem Suchmuster übereinstimmen

Wie Sie sehen können, werden also alle Dateien mit einer anderen Endung als .txt in der Ausgabe ausgegeben.

6. Wie man die Suche auf die Verzeichnisebene(n) einschränkt

Mit dem Befehl find können Sie die Suche auch auf eine bestimmte Verzeichnistiefe beschränken. Eine Befehlszeilenoption, mit der Sie dies tun können, ist -maxdepth.

Betrachten Sie beispielsweise die folgende Verzeichnisstruktur:

Suche auf Verzeichnisebene(n) beschränken

Nehmen wir an, wenn Sie nur bis zum Unterverzeichnis ‚find‘ suchen wollen (d.h. es sollte das Unterverzeichnis ‚howtoforge‘ ignorieren), dann können Sie den folgenden Befehl verwenden:

find . -maxdepth 3 -name "*.txt"

Hier zwingt ‚-maxdepth 3‘ ‚find‘ dazu, hineinzugehen und nur drei Ebenen zu durchsuchen, wobei die erste Ebene Ihr oberstes Ebene (oder das aktuell arbeitende) Verzeichnis ist.

Hier ist die Ausgabe des Befehls:

Suche auf Verzeichnisebene(n) beschränken Ausgabe(n)

Wie bei der maximalen Tiefe gibt es eine weitere Option namens mindepth (Verwendung: ‚-mindepth[N]‘). Bei Verwendung dieser Option wird der Find-Befehl gezwungen, vor Beginn des Suchvorgangs auf die Ebene’N‘ nach unten zu gehen.

Zum Beispiel,

find . -mindepth 3 -name "*.txt"

Suche auf 3 Verzeichnisebenen einschränken

Es werden also nur die Verzeichnisse ‚find‘ und unten durchsucht.

Wenn Sie in ähnlichen Zeilen eine.txt-Datei in Unterverzeichnissen suchen möchten, die zwischen Level 2 und 4 liegen, können Sie den folgenden Befehl verwenden.

find -mindepth 2 -maxdepth 4 -name "*.txt"

7. Alle leeren Dateien anzeigen

Wenn Sie möchten, können Sie mit dem Befehl find alle leeren Dateien in einem bestimmten Verzeichnis (und seinen Unterverzeichnissen) anzeigen. Dies kann mit der Option -empty geschehen.

Um beispielsweise alle leeren Dateien in Ihrem aktuellen Arbeitsverzeichnis anzuzeigen, verwenden Sie den folgenden Befehl:

$ find . -empty

8. So durchsuchen Sie Dateien, die zu einer bestimmten Gruppe gehören

Mit dem Befehl find können Sie auch nach Dateien suchen, die zu einer bestimmten Gruppe gehören – mit der Option -group können Sie dies tun. Der folgende Befehl listet beispielsweise alle Dateien – die sich im aktuellen Arbeitsverzeichnis und seinen Unterverzeichnissen befinden – auf, die zur Gruppe’howtoforge‘ gehören.

find . -group howtoforge -name "*.txt"

Hier ist die Ausgabe des obigen Befehls in meinem Fall:

Suche nach Dateien, die zu einer bestimmten Gruppe gehören

9. So durchsuchen Sie Dateien, die einem bestimmten Benutzer gehören

Mit dem Befehl find können Sie auch nach Dateien suchen, die auf Eigentum basieren – mit der Option -user können Sie dies tun. Der folgende Befehl zeigt beispielsweise alle.txt-Dateien (im aktuellen Verzeichnis vorhanden) an, die dem Benutzer’himanshu‘ gehören:

find . -user himanshu -name "*.txt"

10. So suchen Sie nach zuletzt geänderten Dateien

Mit dem Befehl find können Sie nach zuletzt geänderten Dateien suchen. Dies kann mit der Option -mmin erfolgen. Die Option erfordert, dass Sie eine Zahl übergeben, die als Anzahl der Minuten behandelt wird.

Wenn Sie also z.B. nach.txt-Dateien (in Ihrem aktuellen Verzeichnis) suchen wollen, deren Daten vor 1 Minute geändert wurden, können Sie den folgenden Befehl verwenden:

find . -mmin 1 -name "*.txt"

11. So suchen Sie nach Dateien, die zuletzt geändert wurden, als eine Datei

Ja, mit dem Befehl find können Sie sogar nach Dateien suchen, die in letzter Zeit in einer bestimmten Datei geändert wurden. Auf diese Funktion kann mit der Option -newer zugegriffen werden, die die Übergabe eines Dateinamens (mit dem Sie vergleichen möchten) an sie erfordert.

Hier ist ein Beispiel:

find . -newer ./examples/find/howtoforge/old.txt -name "*.txt"

Suche nach Dateien, die später geändert wurden als eine Datei.

12. Wie man nur Verzeichnisnamen in der Ausgabe anzeigt

Es gibt auch eine Befehlszeilenoption, die es dem Befehl find ermöglicht, nur Verzeichnisnamen in der Ausgabe anzuzeigen. Die fragliche Option ist -type und Sie müssen d als Wert an sie übergeben.

Zum Beispiel:

find -type d

Hier ist die Ausgabe des obigen Befehls in unserem Fall:

nur Verzeichnisnamen in der Ausgabe anzeigen

Neben d gibt es noch einige andere Buchstaben, die als Wert an die Option -type übergeben werden können. Um mehr über sie zu erfahren, gehen Sie zur Man Page des Find-Befehls.

13. So durchsuchen Sie Dateien anhand ihrer Inodennummern

Sie können auch eine Inode-Nummer an den Befehl find übergeben und ihn bitten, den entsprechenden Dateinamen (falls vorhanden) zu finden. Auf diese Funktion kann über die Option -inum zugegriffen werden, die eine Inodennummer als Wert erfordert.

Nachfolgend ein Beispiel:

Durchsuchen von Dateien anhand ihrer Inode-Nummern

Tipp: Sie können die Inode-Nummer einer Datei mit dem Befehl’ls -li‘ finden.

14. So durchsuchen Sie Dateien anhand der letzten Zugriffszeit

Mit dem Befehl find können Sie auch nach Dateien suchen, die darauf basieren, wann sie zuletzt aufgerufen wurden – Sie können das Tool bitten, Dateien anzuzeigen, auf die vor ’n‘ Minuten zuletzt zugegriffen wurde. Auf diese Funktion kann über die Befehlszeilenoption -amin zugegriffen werden.

Der folgende Befehl sucht beispielsweise nach.txt-Dateien im aktuellen Verzeichnis, auf die vor 1 Minute zugegriffen wurde:

find -amin 1 -name "*.txt"

Suche nach Dateien basierend auf der letzten Zugriffszeit

Fazit

Die in diesem Tutorial genannten Beispiele sollen Ihnen einen guten Überblick darüber geben, wie der find-Befehl auf einer grundlegenden Ebene funktioniert, sowie über einige der nützlichen Befehlszeilenoptionen, die er bietet. Probieren Sie diese Beispiele auf Ihrem System aus und gehen Sie auch die Man Page des Tools durch.

Das könnte Dich auch interessieren …