comando de búsqueda para ciertos subdirectorios

17

Digamos que tengo un directorio dircon tres subdirectorios dir1.. dir3. Y dentro tengo muchos archivos y otros subdirectorios.

Me gustaría buscar un archivo dentro, digamos con un *.cfinal, pero solo me gustaría buscar en el subdirectorio "dir / dir2" y todos sus subdirectorios. ¿Cómo puedo formular eso?

Suponiendo que estoy adentro dir/tengo:

find . -name "*.c"

para buscar en todos los directorios.

¿Cómo me limito a solo dir2?

scrrr
fuente

Respuestas:

11

Find aceptará cualquier ruta válida

find ./dir2 -name '*.c'

debería hacer el truco

Si el dirdirectorio es /home/user/dir, podría dar encontrar la ruta completa

find /home/user/dir/dir2 -name '*.c'

fuente
17

También puede usar el -pathparámetro de finden lugar de -name:

find . -path "dir2/*.c"

Esto podría permitirle encontrar archivos dir2incluso si dir2no fuera un subdirectorio directo, por ejemplo:

# find . -path "*/dir2/*.c"
./dir_a/dir2/file.c
./dir_b/dir2/file.c
Josh
fuente
4

Tu puedes hacer find dir2 -name '*.c'

También podrías hacer (cd dir2; find -name '*.c')

Si quisieras mirar dir1 y dir3 pero no dir2, podrías hacer find {dir1,dir3} -name '*.c'

Shawn J. Goff
fuente
3
En el último comando, las llaves no son necesarias. find dir1 dir3 -name \*.cfunciona bien
KeithB
3

Asumiendo que estás en dir

find dir2 -name '*.c'

por supuesto, la respuesta de Iain también es correcta

xenoterracida
fuente