find-command para determinados subdiretórios

15

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 ?

    
por scrrr 15.12.2010 / 13:43

4 respostas

8

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'
    
por 15.12.2010 / 13:54
13

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
    
por 16.12.2010 / 15:16
4

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'

    
por 15.12.2010 / 14:38
3

Supondo que você esteja em dir

find dir2 -name '*.c'

é claro de Iain answer também está correto

    
por 15.12.2010 / 14:11