it-swarm-es.com

comando de búsqueda para ciertos subdirectorios

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

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

Asumiendo que estoy en dir/ Yo tengo:

find . -name "*.c"

para buscar en todos los directorios.

¿Cómo me limito a solo dir2?

18
scrrr

Buscar aceptará cualquier ruta válida para

find ./dir2 -name '*.c'

debería hacer el truco

Si el directorio dir es /home/user/dir podrías dar encontrar el camino completo

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

También puedes usar el -path parámetro de find en lugar de -name:

find . -path "dir2/*.c"

Esto podría permitirle encontrar archivos en dir2 incluso si dir2 no eran un subdirectorio directo, por ejemplo:

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

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'

5
Shawn J. Goff

Asumiendo que estás en dir

find dir2 -name '*.c'

por supuesto Iainrespuesta también es correcto

4
xenoterracide