O Find aceita qualquer caminho válido, por isso
find ./dir2 -name '*.c'
deve fazer o truque
Se o diretório dir for /home/user/dir , você poderá encontrar o caminho completo
find /home/user/dir/dir2 -name '*.c'
Digamos que eu tenha um diretório dir com três subdiretórios dir1 .. dir3 . E por dentro eu tenho muitos arquivos e outros subdiretórios.
Eu gostaria de pesquisar um arquivo interno, digamos com *.c ending, mas gostaria apenas de pesquisar no subdiretório "dir / dir2" e em todos os seus subdiretórios. Como posso formular isso?
Supondo que eu esteja em dir/ , tenho:
find . -name "*.c"
para pesquisar em todos os diretórios.
Como faço para restringir apenas a dir2 ?
Você também pode usar o parâmetro -path de find no lugar de -name :
find . -path "dir2/*.c"
Isso pode permitir que você encontre arquivos em dir2 , mesmo que dir2 não seja um subdiretório direto, E.G:
# find . -path "*/dir2/*.c"
./dir_a/dir2/file.c
./dir_b/dir2/file.c
Você pode fazer find dir2 -name '*.c'
Você também pode fazer (cd dir2; find -name '*.c')
Se você quisesse ver dir1 e dir3, mas não dir2, você poderia fazer find {dir1,dir3} -name '*.c'