¿Cómo puedo buscar de forma recursiva los nombres de directorio con una cadena particular donde la cadena es solo una parte del nombre del directorio?

73

¿Cómo puedo buscar de forma recursiva los nombres de directorio con una cadena particular donde la cadena es solo parte del nombre del directorio?

Por ejemplo: el nombre del directorio es "8.0.3-99966_en", pero quiero buscar directorios de forma recursiva con la cadena "99966".

Bob Perez
fuente

Respuestas:

95

Puedes usar el findcomando:

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

Ejemplo:

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

debe encontrar todos los directorios ( -type d) que comiencen desde su directorio de inicio ( ~) que tengan sus nombres que contengan la cadena "99966" ( -name "*99966*") y los muestren ( -print).

lgarzo
fuente
¿Cómo puedo excluir un determinado directorio de la búsqueda? Necesito buscar / pero obtengo toneladas de resultados / proc que no me importan.
Kozuch
@Kuzuch (¡después de un tiempo!): Puede usar grep negativo, canalizando la búsqueda sinf en un comando como: find <whatever> | grep -v "/ proc" que filtrará todas las líneas que contienen la cadena de búsqueda.
Juan Lanus
19

Para evitar todos los resultados de "Permiso denegado", puede usar:

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

Consulte este artículo sobre dispositivos nulos y este sobre transmisiones estándar para obtener más información.

Dan Fletcher
fuente
funciona para mí :) ~
smatthewenglish
9

Puede canalizar la salida para grepque resalte el nombre del directorio
Algo como

find / -type d | grep "directory name"

El /indica buscar en toda la computadora

Collin
fuente
@Zanna tienes razón, he editado la respuesta. Gracias por señalarlo
Collin
3

Una manera fácil de hacer esto es usarlo find | egrep string. Si hay demasiados golpes, usa la -type dbandera para buscar. Ejecute el comando al comienzo del árbol de directorios que desea buscar, o también deberá proporcionar el directorio como argumento find.

Otra forma de hacer esto es usar ls -laR | egrep ^d.

Y el locatecomando también es útil:locate string

belacqua
fuente