
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 ( printed
e 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 -print
apenas com .cpp
arquivos de impressão. Você provavelmente quer:
find src/ \( -name "*.cc" -o -name "*.cpp" \) -print
Você pode ter diversas condições com ações diferentes.