Como usar o comando “find” com várias condições?

2

Este comando irá imprimir os nomes dos arquivos * .cpp no diretório fornecido:

find . -name "*.cpp" -print  

Como posso imprimir os nomes dos arquivos * .cpp e * .h?

    
por Igor Oks 29.06.2010 / 13:46

4 respostas

2

Tente isto:

find -regex ".*\.\(cpp\|h\)$"

Um exemplo com mais alternativas:

find -regex ".*\.\(cpp\|c\|h\|o\)$"
    
por 29.06.2010 / 16:07
3

Use -o ; veja os exemplos aqui.

    
por 29.06.2010 / 13:57
1

Vou dar um exemplo. Isto irá procurar por arquivos com owner = 1000 e escrevê-los para "uid.list", procurar por arquivos com group = 1000 e escrevê-los para "gid.list" e ele irá ignorar os caminhos que começam com / proc, / sys, / dev . A vantagem das condições combinadas é que o sistema de arquivos é varrido apenas uma vez. Aqui está:

find / \
\( \( -path "/proc" -or -path "/sys" -or -path "/dev" \) -prune \) -or \
\( \( -user 1000 -fprint "uid.list" \)  , 
   \( -group 1000 -fprint "gid.list" \) \)
    
por 29.06.2010 / 14:36
0

Uso:

find . -name "*.cpp" -print -o -name "*.h" -print
    
por 10.07.2014 / 22:33

Tags