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?

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'

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

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'


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

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.