it-swarm-pt.tech

comando find para certos subdiretórios

Digamos que eu tenha um diretório dir com três subdiretórios dir1 .. dir3. E por dentro tenho muitos arquivos e outros subdiretórios.

Gostaria de procurar um arquivo dentro, digamos com um *.c terminando, mas eu 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/ Eu tenho:

find . -name "*.c"

para procurar em todos os diretórios.

Como faço para restringir a apenas dir2?

18
scrrr

O Find aceita qualquer caminho válido para

find ./dir2 -name '*.c'

deve fazer o truque

Se o diretório dir for /home/user/dir você poderia dar encontrar o caminho completo

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

Você também pode usar o -path parâmetro de find no lugar de -name:

find . -path "dir2/*.c"

Isso pode permitir que você encontre arquivos em dir2 mesmo se dir2 não eram um subdiretório direto, por exemplo:

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

Você pode fazer find dir2 -name '*.c'

Você também pode fazer (cd dir2; find -name '*.c')

Se você quisesse olhar para dir1 e dir3, mas não para dir2, você poderia fazer find {dir1,dir3} -name '*.c'

5
Shawn J. Goff

Supondo que você esteja em dir

find dir2 -name '*.c'

claro que de Iainresposta também está correto

4
xenoterracide