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

comando find fornecendo saídas diferentes com/sem -print
find src/ -name "*.cc" -o -name "*.cpp" -print
find src/ -name "*.cc" -o -name "*.cpp"

O comportamento pretendido é localizar 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 ( printede notprinted, respectivamente):

$ wc -l printed notprinted
1813 printed
1979 notprinted

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

O que está acontecendo aqui?

Responder1

A resposta é a precedência. Se nenhuma ação for fornecida, ela será impressa, mas se você especificar uma ação, ela fará o que você pediu. Seu exemplo -printapenas com .cpparquivos de impressão. Você provavelmente quer:

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

Você pode ter diversas condições com ações diferentes.

informação relacionada