¿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".

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).


¿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


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


@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

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.