find comando dando saídas diferentes com / sem -print

0
find src/ -name "*.cc" -o -name "*.cpp" -print
find src/ -name "*.cc" -o -name "*.cpp"

O comportamento pretendido é encontrar todos os arquivos C ++ em um diretório e todos os seus subdiretórios. Pelo que entendi, o comando -print era o padrão. No entanto, esses dois comandos me dão resultados significativamente diferentes. Se eu redirecioná-los para um arquivo ( printed e notprinted , respectivamente):

$ wc -l printed notprinted
1813 printed
1979 notprinted

Diffing cada arquivo classificado não me ajuda muito. Não há um padrão claro para o que é excluído de printed .

O que está acontecendo aqui?

    
por Robert 07.02.2012 / 21:16

1 resposta

1

A resposta é a precedência. Se nenhuma ação for dada, ela será impressa, mas se você especificar uma ação, ela fará o que solicitou. Seu exemplo com -print imprime somente .cpp arquivos. Você provavelmente quer:

find src/ \( -name "*.cc" -o -name "*.cpp" \) -print

Você pode ter várias condições com diferentes ações.

    
por 07.02.2012 / 21:23

Tags