Suchen nach Dateien anhand ihres Namens
Wenn du den Namen einer Datei kennst, aber nicht weißt, wo sie sich befindet, kannst du den Befehl find
verwenden, um sie anhand ihres Namens zu suchen. Die Syntax lautet wie folgt:
find [Pfad] -name [Dateiname]
Dabei ist:
-
[Pfad]
: Der Pfad zum Verzeichnis, in dem du suchen möchtest. -
[Dateiname]
: Der Name der Datei, nach der du suchst.
Platzhalter verwenden
Du kannst Platzhalter verwenden, um nach Dateien zu suchen, die bestimmte Zeichen enthalten. Die folgenden Platzhalter stehen zur Verfügung:
-
*
: Beliebige Anzahl beliebiger Zeichen -
?
: Ein beliebiges Zeichen
Beispiel:
find /home -name "*README*"
Dieser Befehl sucht im Verzeichnis /home
und allen seinen Unterverzeichnissen nach allen Dateien, die das Wort "README" irgendwo in ihrem Namen enthalten.
Reguläre Ausdrücke verwenden
Du kannst auch reguläre Ausdrücke verwenden, um nach Dateien anhand ihres Namens zu suchen. Dies ist eine leistungsstärkere Möglichkeit, als Platzhalter zu verwenden. Weitere Informationen zur Verwendung regulärer Ausdrücke findest du in der Manpage zu find.
Beispiel:
find /home -name "filename[0-9].txt"
Dieser Befehl sucht im Verzeichnis /home
und allen seinen Unterverzeichnissen nach Dateien mit dem Namen "filename", gefolgt von einer Zahl zwischen 0 und 9 und der Endung ".txt".
Groß- und Kleinschreibung beachten
Standardmäßig unterscheidet find
zwischen Groß- und Kleinschreibung. Wenn du nach einer Datei suchen möchtest, ohne auf die Groß-/Kleinschreibung zu achten, kannst du die Option -iname
verwenden.
Beispiel:
find /home -iname "README"
Dieser Befehl sucht im Verzeichnis /home
und allen seinen Unterverzeichnissen nach allen Dateien mit dem Namen "README", unabhängig von der Groß-/Kleinschreibung.
Suche nach Dateien anhand ihrer Dateitypen
Wenn du Dateien mit einem bestimmten Dateityp suchen möchtest, kannst du den Befehl find
mit der Option -type
verwenden. Diese Option ermöglicht es dir, Dateien anhand ihrer Dateitypkennung zu suchen, wie z. B. f
für reguläre Dateien, d
für Verzeichnisse oder h
für symbolische Links.
Beispiel: Suche nach Textdateien
Nehmen wir an, du möchtest alle Textdateien im aktuellen Verzeichnis und seinen Unterverzeichnissen finden. Du kannst den folgenden Befehl verwenden:
find -type f -name "*.txt"
Dieser Befehl sucht nach allen Dateien mit der Dateityperkennung f
(reguläre Dateien) und einem Namen, der mit .txt
endet.
Beispiel: Suche nach Verzeichnissen
Wenn du nach Verzeichnissen in deinem Home-Verzeichnis suchen möchtest, kannst du den folgenden Befehl verwenden:
find /home -type d
Dieser Befehl sucht nach allen Dateien mit der Dateityperkennung d
(Verzeichnisse) im Verzeichnis /home
.
Beispiel: Suche nach allen Dateien, die nicht reguläre Dateien sind
Du kannst den Befehl find
auch verwenden, um nach Dateien zu suchen, die keinen bestimmten Dateityp haben. Dies ist hilfreich, wenn du z. B. nach Symbolischen Links oder Named Pipes suchen möchtest.
find -not -type f
Dieser Befehl sucht nach allen Dateien mit jeder Dateityperkennung außer f
(reguläre Dateien).
Suche nach Dateien anhand ihrer Größe
Wenn du Dateien anhand ihrer Größe suchen möchtest, kannst du die Option -size
des Befehls find
verwenden. Damit kannst du Dateien nach ihrer Größe in Bytes, Kilobytes (K), Megabytes (M) oder Gigabytes (G) suchen.
Suche nach Dateien einer bestimmten Größe
Um nach Dateien einer bestimmten Größe zu suchen, verwende die folgende Syntax:
find /pfad/zum/verzeichnis -size n[Einheit]
Dabei ist:
-
/pfad/zum/verzeichnis
das Verzeichnis, in dem du suchen möchtest. -
n
die Größe, nach der du suchst. -
[Einheit]
die Einheit, in der du die Größe angibst (z. B. "K" für Kilobytes).
Beispiel: Um nach Dateien mit einer Größe von 1 Megabyte zu suchen, würdest du folgenden Befehl ausführen:
find /home/benutzername -size 1M
Suche nach Dateien innerhalb eines Größenbereichs
Du kannst auch nach Dateien innerhalb eines bestimmten Größenbereichs suchen. Dazu verwendest du die Operatoren >
(größer als), <
(kleiner als), >=
(größer oder gleich) und <=
(kleiner oder gleich).
Beispiel: Um nach Dateien zu suchen, die größer als 10 Megabyte sind, würdest du folgenden Befehl ausführen:
find /home/benutzername -size +10M
Suche nach Dateien mit einer bestimmten Dateigröße
Du kannst auch nach Dateien suchen, die eine bestimmte Dateigröße haben. Dazu verwendest du die Option -size c
.
Beispiel: Um nach Dateien mit einer Größe von genau 100 Kilobytes zu suchen, würdest du folgenden Befehl ausführen:
find /home/benutzername -size 100c
Suche nach Dateien, die größer oder kleiner als eine bestimmte Größe sind
Du kannst auch nach Dateien suchen, die größer oder kleiner als eine bestimmte Größe sind. Dazu verwendest du die Optionen -minsize
und -maxsize
.
Beispiel: Um nach Dateien zu suchen, die größer als 100 Kilobyte sind, würdest du folgenden Befehl ausführen:
find /home/benutzername -minsize 100k
Um nach Dateien zu suchen, die kleiner als 100 Kilobyte sind, würdest du folgenden Befehl ausführen:
find /home/benutzername -maxsize 100k
Suche nach Dateien anhand ihres Datums
Wann hast du das letzte Mal eine Datei auf deinem System abgespeichert? Wenn du dich nicht erinnerst, keine Sorge! Mithilfe des Befehls find
kannst du Dateien anhand ihres Erstellungs-, Änderungs- oder Zugriffsdatums suchen.
Erstellungsdatum
Um nach Dateien zu suchen, die an einem bestimmten Datum erstellt wurden, verwende die Option -ctime
, gefolgt von der Anzahl der Tage vor dem aktuellen Datum:
find / -ctime 2
Dieser Befehl sucht alle Dateien im Stammverzeichnis (/
), die innerhalb der letzten zwei Tage erstellt wurden. Du kannst auch relative Werte verwenden, beispielsweise -ctime -7
, um nach Dateien zu suchen, die in den letzten sieben Tagen erstellt wurden.
Änderungsdatum
Zum Suchen nach Dateien, die an einem bestimmten Datum geändert wurden, verwende die Option -mtime
:
find / -mtime 10
Dieser Befehl sucht alle Dateien im Stammverzeichnis, die innerhalb der letzten zehn Tage geändert wurden.
Zugriffsdatum
Du kannst auch nach Dateien suchen, auf die an einem bestimmten Datum zugegriffen wurde, indem du die Option -atime
verwendest:
find / -atime 5
Dieser Befehl sucht alle Dateien im Stammverzeichnis, auf die innerhalb der letzten fünf Tage zugegriffen wurde.
Kombinieren von Datumsoptionen
Du kannst Datumsoptionen kombinieren, um die Suche weiter einzuschränken. Beispielsweise sucht der folgende Befehl nach Dateien, die innerhalb der letzten zwei Tage erstellt und innerhalb der letzten fünf Tage geändert wurden:
find / -ctime 2 -mtime 5
Suche nach Dateien anhand ihrer Berechtigungen
Neben der Suche nach Dateien anhand von Name, Typ, Größe und Datum kannst du auch nach Dateien suchen, die bestimmte Dateiberechtigungen haben. Dies kann nützlich sein, wenn du z. B. nach Dateien suchst, die nur du lesen kannst, oder nach Dateien, die für alle Benutzer ausführbar sind.
Finden von Dateien mit bestimmten Berechtigungen
Um nach Dateien mit bestimmten Berechtigungen zu suchen, kannst du den Befehl find
in Verbindung mit der Option -perm
verwenden. Die Syntax lautet wie folgt:
find [Pfad] -perm [Berechtigungen]
Dabei ist:
-
[Pfad]
der Pfad zum Verzeichnis, in dem du suchen möchtest. -
[Berechtigungen]
ein numerischer Wert, der die gewünschten Dateiberechtigungen angibt.
Beispielsweise kannst du mit dem folgenden Befehl nach allen Dateien im aktuellen Verzeichnis und seinen Unterverzeichnissen suchen, die nur für den Benutzer lesbar sind:
find . -perm 400
Verständnis numerischer Berechtigungswerte
Numerische Berechtigungswerte werden verwendet, um die Berechtigungen für jeden Dateityp einzeln anzugeben. Die erste Ziffer gibt die Berechtigungen für den Eigentümer der Datei an, die zweite Ziffer gibt die Berechtigungen für die Gruppe an, zu der der Eigentümer gehört, und die dritte Ziffer gibt die Berechtigungen für alle anderen Benutzer an.
Jede Ziffer kann eine Kombination aus folgenden Werten sein:
-
4
: Leseberechtigung -
2
: Schreibberechtigung -
1
: Ausführungsberechtigung
Beispielsweise gibt der Wert 400
an, dass der Eigentümer der Datei Leseberechtigungen hat, während alle anderen Benutzer keine Berechtigungen haben.
Verwendung von find
und -perm
für erweiterte Suchen
Zusätzlich zur Angabe exakter numerischer Berechtigungswerte kannst du auch Platzhalter in der Option -perm
verwenden, um nach Dateien mit bestimmten Arten von Berechtigungen zu suchen. Beispielsweise kannst du mit dem folgenden Befehl nach allen Dateien suchen, die für den Benutzer schreibbar sind:
find . -perm -200
Dieser Befehl sucht nach allen Dateien, deren zweite Ziffer (die die Berechtigungen für die Gruppe des Benutzers angibt) mindestens 2
(für Schreibberechtigung) ist.
Verwendung von regulären Ausdrücken für erweiterte Suche
Mit regulären Ausdrücken (Regex) kannst du erweiterte Suchmuster erstellen, um die Suche nach Dateien in Linux noch genauer zu gestalten. Regex-Syntax ermöglicht es dir, komplexere Kriterien zu definieren, die auf Textzeichenfolgen basieren.
Grundlagen von regulären Ausdrücken
Regex-Ausdrücke verwenden spezielle Metazeichen, um Suchmuster zu definieren:
- .` (Punkt): Passt zu jedem Zeichen
-
*
(Sternchen): Passt zu null oder mehreren Vorkommen des vorherigen Zeichens -
+
(Pluszeichen): Passt zu einem oder mehreren Vorkommen des vorherigen Zeichens -
?
(Fragezeichen): Passt zu null oder einem Vorkommen des vorherigen Zeichens -
\[
und\]
(eckige Klammern): Definieren eine Zeichenklasse, die mit einem beliebigen der eingeschlossenen Zeichen übereinstimmt -
^
(Zirkumflex): Passt an den Anfang der Zeichenfolge -
$
(Dollarzeichen): Passt an das Ende der Zeichenfolge
Regex-Suchbeispiele
-
^file
: Dateien, die mit "file" beginnen -
.txt$
: Dateien, die mit ".txt" enden -
.*jpg
: Dateien, die irgendwo im Namen ".jpg" enthalten -
a*b
: Dateien, die ein "a" gefolgt von null oder mehreren "b"s enthalten -
\[0-9\]+
: Dateien, deren Name eine Zahlenfolge enthält
Verwendung von Regex mit dem Befehl find
Um Regex mit find
zu verwenden, verwende die Option -regex
gefolgt vom Regex-Ausdruck.
Beispiel: Suche nach Dateien im Verzeichnis /home
, die mit "file" beginnen:
find /home -regex '^file'
Regex-Ressourcen
Für weitere Informationen zu Regex-Syntax kannst du folgende Ressourcen nutzen:
- RegExr: Interaktiver Regex-Tester
- Regular Expressions 101: Umfangreiche Regex-Dokumentation
Suchen nach Dateien rekursiv
Bei einer rekursiven Suche werden Verzeichnisse durchlaufen, um Dateien zu finden, die deinen Suchkriterien entsprechen, auch wenn sie sich in Unterverzeichnissen befinden. Diese Methode ist hilfreich, wenn du nicht weißt, in welchem Verzeichnis sich eine bestimmte Datei befindet, oder wenn du nach Dateien mit einem bestimmten Namen suchen möchtest, die sich über mehrere Verzeichnisse erstrecken.
Um eine rekursive Suche durchzuführen, verwende die Option -r
(rekursiv) mit dem Befehl find
. Beispielsweise kannst du nach allen Dateien mit dem Namen test.txt
in deinem aktuellen Verzeichnis und allen Unterverzeichnissen suchen, indem du folgenden Befehl ausführst:
find . -name test.txt -r
Suche nach Dateien in versteckten Verzeichnissen
Wenn du nach Dateien in versteckten Verzeichnissen suchen möchtest, musst du die Option -xdev
(Verzeichnisgrenzen überschreiten) verwenden. Diese Option verhindert, dass die Suche an Gerätegrenzen (z. B. an gemounteten Laufwerken) stoppt.
Um beispielsweise nach allen Dateien mit dem Namen secret.txt
in deinem aktuellen Verzeichnis und allen Unterverzeichnissen zu suchen, einschließlich versteckter Verzeichnisse, kannst du folgenden Befehl ausführen:
find . -name secret.txt -r -xdev
Begrenzen der Anzahl der angezeigten Ergebnisse
Wenn du eine sehr große Anzahl von Dateien durchsuchst, kann die Ausgabe des Befehls find
unübersichtlich werden. Um die Anzahl der angezeigten Ergebnisse zu begrenzen, kannst du die Option -maxdepth
verwenden. Diese Option gibt die maximale Verschachtelungstiefe an, die die Suche durchlaufen soll.
Um beispielsweise nach allen Dateien mit dem Namen test.txt
in deinem aktuellen Verzeichnis und allen Unterverzeichnissen bis zu einer Tiefe von 2 zu suchen, kannst du folgenden Befehl ausführen:
find . -name test.txt -r -maxdepth 2
Weiterleitungsbefehle für weitere Aktionen
Sobald du die gesuchten Dateien gefunden hast, kannst du Weiterleitungsbefehle verwenden, um weitere Aktionen durchzuführen. Beispielsweise kannst du die Ausgabe des Befehls find
an den Befehl xargs
weiterleiten, um eine Reihe von Befehlen auf die gefundenen Dateien anzuwenden.
Um beispielsweise alle Dateien mit dem Namen test.txt
in deinem aktuellen Verzeichnis und allen Unterverzeichnissen zu löschen, kannst du folgenden Befehl ausführen:
find . -name test.txt -r | xargs rm
Suchen nach Dateien in versteckten Verzeichnissen
Versteckte Verzeichnisse in Linux beginnen mit einem Punkt (.). Diese Verzeichnisse werden oft zum Speichern von Konfigurationsdateien, temporären Dateien oder anderen Informationen verwendet, die du möglicherweise nicht regelmäßig benötigst. Um nach Dateien in versteckten Verzeichnissen zu suchen, musst du der find
-Befehl anweisen, versteckte Dateien anzuzeigen.
Verwenden der Option -xdev
Eine Möglichkeit, nach Dateien in versteckten Verzeichnissen zu suchen, besteht darin, die Option -xdev
zu verwenden. Diese Option weist find
an, nicht über Gerätegrenzen hinweg zu suchen, wodurch sichergestellt wird, dass nur Dateien auf dem aktuellen Gerät durchsucht werden. So kannst du beispielsweise nach versteckten Dateien im Verzeichnis /home/benutzer
suchen:
find /home/benutzer -xdev -name ".bashrc"
Verwenden von regulären Ausdrücken
Eine andere Möglichkeit, nach Dateien in versteckten Verzeichnissen zu suchen, ist die Verwendung regulärer Ausdrücke. Reguläre Ausdrücke sind Muster, mit denen du komplexe Suchkriterien definieren kannst. Um nach versteckten Dateien zu suchen, kannst du folgenden regulären Ausdruck verwenden:
find /home/benutzer -regex ".*\..*"
Dieser reguläre Ausdruck stimmt mit allen Dateien überein, deren Name mit einem Punkt beginnt.
Kombination von Optionen
Du kannst die Optionen -xdev
und reguläre Ausdrücke kombinieren, um noch spezifischere Suchen durchzuführen. So kannst du beispielsweise nach versteckten Textdateien im Verzeichnis /home/benutzer
suchen:
find /home/benutzer -xdev -regex ".*\..*\.txt"
Denke daran, dass die Suche nach Dateien in versteckten Verzeichnissen je nach Größe des Dateisystems und der Anzahl der versteckten Dateien einige Zeit in Anspruch nehmen kann.
Begrenzen der Anzahl der angezeigten Ergebnisse
Bei der Suche nach Dateien mit dem Befehl find
kannst du die Anzahl der angezeigten Ergebnisse begrenzen, um eine übersichtlichere Ausgabe zu erhalten. Dies kann in folgenden Szenarien nützlich sein:
- Vermeidung von Überlastung: Bei großen Dateisystemen kann eine unbegrenzte Suche zu einer Überlastung des Systems führen.
- Fokus auf bestimmte Ergebnisse: Durch die Begrenzung der Ergebnisse kannst du dich auf die relevantesten Übereinstimmungen konzentrieren.
-maxdepth
-Option
Die -maxdepth
-Option begrenzt die Tiefe der Rekursion bei der Suche nach Dateien. Dies ist hilfreich, wenn du nur Dateien innerhalb eines bestimmten Verzeichnisses und nicht in seinen Unterverzeichnissen suchen möchtest. Die Syntax lautet:
find <Verzeichnis> -maxdepth <Tiefe>
Beispiel: Um nur Dateien auf der obersten Ebene des Verzeichnisses /home/benutzer
zu finden, gibst du Folgendes ein:
find /home/benutzer -maxdepth 1
-print0
– und -exec
-Option
Eine weitere Methode zum Begrenzen der Anzahl der angezeigten Ergebnisse ist die Verwendung der -print0
– und -exec
-Optionen. -print0
weist find
an, jede gefundene Datei mit einem Nullzeichen (\0) zu beenden, anstatt einem Zeilenumbruch. -exec
ermöglicht es dir, einen Befehl für jede gefundene Datei auszuführen.
Beispiel: Um die ersten 10 gefundenen Dateien anzugeben, kannst du Folgendes eingeben:
find /home/benutzer -print0 | head -10 | xargs -0 ls -l
Die head
– und xargs
-Befehle beschränken die Anzahl der angezeigten Dateien auf 10 und listen ihre Details auf.
-exec
-Option mit wc
-Befehl
Du kannst die exec
-Option auch zusammen mit dem wc
-Befehl verwenden, um die Anzahl der gefundenen Dateien zu zählen:
find /home/benutzer -exec wc -l {} +
In diesem Beispiel zählt der wc
-Befehl die Zeilen (Dateien) für jede gefundene Datei und gibt die Gesamtanzahl an.
Weiterleitungsbefehle für weitere Aktionen
Sobald du die gesuchten Dateien gefunden hast, kannst du sie mit ein paar einfachen Weiterleitungsbefehlen verschiedenen Aktionen unterziehen. Auf diese Weise kannst du die Dateiverwaltung automatisieren und Zeit sparen.
Kopieren, Verschieben und Löschen von Dateien
-
Kopieren: Um eine Datei in ein anderes Verzeichnis zu kopieren, kannst du
find
mitcp
kombinieren:
find /pfad/zu/verzeichnis -name dateiname -exec cp {} /neues/verzeichnis \;
-
Verschieben: Du kannst
find
auch mitmv
kombinieren, um Dateien zu verschieben:
find /pfad/zu/verzeichnis -name dateiname -exec mv {} /neues/verzeichnis \;
-
Löschen: Um Dateien zu löschen, kannst du
find
mitrm
kombinieren:
find /pfad/zu/verzeichnis -name dateiname -exec rm {} \;
Anzeigen von Dateiinformationen
-
Dateigröße: Um die Größe einer Datei anzuzeigen, kannst du
find
mitls -l
kombinieren:
find /pfad/zu/verzeichnis -name dateiname -exec ls -l {} \;
-
Dateiberechtigungen: Um die Berechtigungen einer Datei anzuzeigen, kannst du
find
mitls -l
kombinieren:
find /pfad/zu/verzeichnis -name dateiname -exec ls -l {} \;
Ausführen von Skripten
Du kannst find
auch mit Skripten kombinieren, um komplexere Aktionen auszuführen. Angenommen, du hast ein Skript mein_skript.sh
, das eine Datei verarbeitet:
find /pfad/zu/verzeichnis -name dateiname -exec ./mein_skript.sh {} \;
Andere Optionen
-
xargs: Der Befehl
xargs
kann verwendet werden, um eine Liste von Dateien als Argumente an einen anderen Befehl weiterzuleiten. Er ist besonders nützlich, wenn der Befehl mehrere Argumente akzeptiert. -
parallel: Der Befehl
parallel
kann verwendet werden, um Befehle parallel auf mehreren Dateien auszuführen. Dies kann die Ausführungszeit erheblich verkürzen. Du findestparallel
hier: https://www.gnu.org/software/parallel/