Uma confusão sobre o parâmetro “-print” no comando “find” [duplicate]

0
    

Esta pergunta já tem uma resposta aqui:

    

Eu sou uma nova abelha para o Linux. Eu tenho uma pergunta sobre o comando find . Quando pesquiso um arquivo em um diretório, gostaria de pular um subdiretório chamado publish

find ./ -path ./publish -prune -o -iname rdesvc -type f -print

Funciona bem:

./release/apps/rdeSvc/server/linux/rdeSvc

Mas, se eu remover o parâmetro -print :

find ./ -path ./publish -prune -o -iname rdesvc -type f

Ele mostrará o nome do subdiretório com o resultado da pesquisa:

./publish
./release/apps/rdeSvc/server/linux/rdeSvc

Eu sinto confusão. Por que o nome do subdiretório publish é gerado se eu removi o parâmetro -print ?

Minha distribuição é CentOS 6.6 64 bit.

    
por yw5643 31.08.2016 / 14:00

1 resposta

4

Esta é uma combinação da ação padrão de find sendo -print e %C3%A3o_do_operador do precedente .

find ./ -path ./publish -prune -o -iname rdesvc -type f -print

é interpretado como

find ./ \( -path ./publish -prune \) -o \( -iname rdesvc -type f -print \)

então find é limpo, e qualquer coisa correspondente a ./publish é impressa.

Mas

find ./ -path ./publish -prune -o -iname rdesvc -type f

é interpretado como

find ./ \( \( -path ./publish -prune \) -o \( -iname rdesvc -type f \) \) -print

então rdesvc é removido e impresso, e qualquer coisa correspondente a ./publish é impressa. (A ação rdesvc é avaliada como -prune .)

    
por 31.08.2016 / 14:11

Tags