Wie finde ich in einer Reihe von Verzeichnissen eine Datei, deren Name eine bestimmte Zeichenfolge enthält, z. B. "abcde"?
quelle
Wie finde ich in einer Reihe von Verzeichnissen eine Datei, deren Name eine bestimmte Zeichenfolge enthält, z. B. "abcde"?
find
durchsucht eine Verzeichnisstruktur und gibt Ergebnisse basierend auf einem Glob zurück :
find /your/dir -name "*abcde*"
Durch Hinzufügen des -type f
Schalters werden Ihre Suchkriterien so verfeinert, dass nur Dateien zurückgegeben werden.
find /your/dir -type f -name "*abcde*"
Sie können auch andere Schalter einschließen -maxdepth 2
, um die Suche auf zwei Verzeichnisebenen unter der angegebenen zu beschränken.
Auf diese Weise können Sie einen umfangreichen, zielgerichteten Suchbefehl erstellen, der schnell genau das zurückgibt, was Sie benötigen.
man find
verfügt über eine Fülle von Details, einschließlich Aktionen -exec
zum Ausführen eines Befehls für die von zurückgegebenen Dateien find
und Optionen zur Verwendung regulärer Ausdrücke.
-type f
,find
damit Sie nur Ergebnisse erhalten, bei denen es sich um Dateien handelt.find /your/dir -type f -name "*abcde*"
Verwenden Sie find :
quelle
Wenn es
locate
Ihnen passt (es ist schnell, aber nur so gut wie der letzte Lauf vonsudo updatedb
). Sie könnenlocate
mit einer eigenen integrierten Regex-Funktion arbeiten ...Hier ist ein parametergesteuertes Skript, mit dem Sie tun können, was Sie wollen. Nennen Sie es mit $ 1 als "abcde", nach dem Sie suchen, und mit nachfolgenden Parametern als Verzeichnissen:
Ein Beispielaufruf sieht folgendermaßen aus:
Wie von Jasonwryan vorgeschlagen , ist hier eine kommentierte Version des Skripts.
Beachten Sie, dass
locate
immer vollqualifizierte Pfade ausgegeben werden.quelle
für die Verzeichnisse dirA, dirB, dirC.
Oder 3 Suchbefehle.
quelle