Wie kann ich rekursiv nach Verzeichnisnamen mit einer bestimmten Zeichenfolge suchen, wobei die Zeichenfolge nur ein Teil des Verzeichnisnamens ist?

73

Wie kann ich mit einer bestimmten Zeichenfolge rekursiv nach Verzeichnisnamen suchen, wobei die Zeichenfolge nur ein Teil des Verzeichnisnamens ist?

Beispiel: Der Verzeichnisname lautet "8.0.3-99966_de", aber ich möchte rekursiv nach Verzeichnissen mit der Zeichenfolge "99966" suchen.

Bob Perez
quelle

Antworten:

95

Sie können den findBefehl verwenden:

find YOUR_STARTING_DIRECTORY -type d -name "*99966*" -print

Beispiel:

find ~ -type d -name "*99966*" -print

sollten alle Verzeichnisse ( -type d) finden, die von Ihrem Ausgangsverzeichnis ( ) ausgehen und ~deren Namen die Zeichenfolge "99966" ( -name "*99966*") enthalten, und sie ausgeben ( -print).

lgarzo
quelle
Wie kann ich ein bestimmtes Verzeichnis von der Suche ausschließen? Ich muss suchen / aber ich erhalte Unmengen von / proc-Ergebnissen, die mir egal sind.
Kozuch
@Kuzuch (nach einer Weile!): Sie können negatives grep verwenden und die sinf-Suche in einen Befehl wie: find <whatever> | umleiten grep -v "/ proc" filtert alle Zeilen heraus, die den Suchbegriff enthalten.
Juan Lanus
19

Sie können Folgendes verwenden, um alle Ergebnisse von "Berechtigung verweigert" zu vermeiden:

find / -type d -name "*99966*" -print 2>/dev/null

Weitere Informationen finden Sie in diesem Artikel zu Null-Geräten und in diesem Artikel zu Standard-Streams .

Dan Fletcher
quelle
funktioniert bei mir :) ~
smatthewenglish
9

Sie können die Ausgangsleitung an grepden Verzeichnisnamen haben , markieren
So etwas wie

find / -type d | grep "directory name"

Das /zeigt an, dass der gesamte Computer durchsucht werden soll

Collin
quelle
@Zanna du hast recht, ich habe die Antwort bearbeitet. Vielen Dank für den Hinweis
Collin
3

Ein einfacher Weg, dies zu tun, ist zu verwenden find | egrep string. Wenn zu viele Treffer vorhanden sind, verwenden Sie die -type dFlagge zum Suchen. Führen Sie den Befehl am Anfang des Verzeichnisbaums aus, den Sie durchsuchen möchten, oder Sie müssen das Verzeichnis auch als Argument findangeben.

Eine andere Möglichkeit ist die Verwendung von ls -laR | egrep ^d.

Und der locateBefehl ist auch praktisch:locate string

belacqua
quelle