comando find para certos subdiretórios


17

Digamos que eu tenho um diretório dircom 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 *.cfinal, mas gostaria apenas de procurar no subdiretório "dir / dir2" e em todos os seus subdiretórios. Como posso formular isso?

Supondo que eu esteja dir/, tenho:

find . -name "*.c"

para procurar em todos os diretórios.

Como faço para restringir apenas dir2?

Respostas:


11

O Find aceita qualquer caminho válido para

find ./dir2 -name '*.c'

deve fazer o truque

Se o dirdiretório for, /home/user/dirvocê pode encontrar o caminho completo

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

17

Você também pode usar o -pathparâmetro findno lugar de -name:

find . -path "dir2/*.c"

Isso poderia permitir que você localizasse arquivos dir2mesmo que dir2não fosse um subdiretório direto, EG:

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

4

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'


3
No último comando, os aparelhos não são necessários. find dir1 dir3 -name \*.cfunciona muito bem.
KeithB

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.