Come posso ricorsivamente cercare i nomi di directory con una stringa particolare in cui la stringa fa solo parte del nome della directory


73

Come posso cercare ricorsivamente nomi di directory con una stringa particolare in cui la stringa fa solo parte del nome della directory?

Ad esempio: il nome della directory è "8.0.3-99966_en", ma voglio cercare ricorsivamente directory con la stringa "99966".

Risposte:


95

Puoi usare il findcomando:

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

Esempio:

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

dovrebbe trovare tutte le directory ( -type d) a partire dalla propria directory home ( ~) che hanno i loro nomi contenenti la stringa "99966" ( -name "*99966*") e produrle ( -print).


Come posso escludere una determinata directory dalla ricerca? Ho bisogno di cercare / ma ottengo tonnellate di / proc risultati di cui non mi interessa.
Kozuch,

@Kuzuch (dopo un po '!): Puoi usare grep negativo, convogliare la ricerca sinf in un encomio come: find <whatever> | grep -v "/ proc" che filtrerà tutte le righe contenenti la stringa di ricerca.
Juan Lanus,


9

È possibile reindirizzare l'output per grepevidenziare il nome della directory
Qualcosa di simile

find / -type d | grep "directory name"

L' /indica di cercare l'intero computer


@Zanna hai ragione, ho modificato la risposta. Grazie per averlo sottolineato
Collin il

3

Un modo semplice per farlo è usare find | egrep string. Se ci sono troppi colpi, usa la -type dbandiera per trovare. Esegui il comando all'inizio dell'albero della directory che desideri cercare, altrimenti dovrai fornire la directory come argomento find.

Un altro modo per farlo è usare ls -laR | egrep ^d.

E il locatecomando è utile:locate string

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.