Linux encuentra carpeta dentro de subcarpetas

19

Estoy tratando de encontrar un directorio llamado 480debugerroranidado en directorios secundarios. No sé la ruta exacta, o incluso si tengo la ortografía exacta del directorio que quiero encontrar.

¿Existe un comando de Linux para buscar directorios con un prefijo o sufijo dado, por ejemplo directorios con un nombre de "depuración" o "error de depuración", con algún prefijo o sufijo desconocido?

Bharanikumar
fuente
2
Puede probar locate(localiza archivos) o find(encuentra archivos).
miku
find -type f -name * ummy ... but not get
3
Necesitas -tipo d . fbusca archivos
thkala

Respuestas:

16

find es lo que necesitas:

$ find -type d -name '*debugerror*'

o

$ find -type d -name '480debugerror'

si está seguro del nombre de la carpeta

thkala
fuente
8
find . -type d \( -iname '*error*' -o -iname '*debug*' \) 
Zsolt Botykai
fuente
1
locate -i "480debugerror"

verificará una base de datos que enumera todos los archivos indexados en su PC. A menudo tengo escenarios como este y por eso hago búsquedas como:

locate -i "debug" | grep -i "log"

que encuentra todos los archivos que tienen en su ruta (independientemente del caso [eso es lo que significa -i]) "depurar" y "registrar" (en caso de que no lo sepa, la | grepbúsqueda de medios dentro de los resultados que localiza produce)

La ventaja de usar localizar sobre encontrar es que localizar producirá resultados mucho más rápido (ya que solo está verificando una base de datos) pero si el archivo / carpeta no está indexado, entonces no encontrará nada. (para actualizar la base de datos que puede usar sudo updatedb)

jcuenod
fuente
Solo si lo has slocateinstalado. Algunos entornos de producción no :-(
Zsolt Botykai
Es cierto, pero si fuera una opción, diría que es superior encontrar ...
1

En bash,

shopt -s nullglob globstar
echo **/*480*/
echo **/*debug*/
echo **/*error*/

busca recursivamente directorios con nombres que contengan 480, depuración o error.

usuario2394284
fuente