Usar ; (ponto-e-vírgula) ou + (sinal de mais) é obrigatório para finalizar os comandos do shell invocados por -exec / execdir .
A diferença entre ; (ponto e vírgula) ou + (sinal de mais) é como os argumentos são passados para o parâmetro -exec / -execdir de find. Por exemplo:
-
usando
;executará vários comandos (separadamente para cada argumento),Exemplo:
$ find /etc/rc* -exec echo Arg: {} ';' Arg: /etc/rc.common Arg: /etc/rc.common~previous Arg: /etc/rc.local Arg: /etc/rc.netbootAll following arguments to
findare taken to be arguments to the command.The string
{}is replaced by the current file name being processed. -
usando
+executará o mínimo de comandos possíveis (conforme os argumentos são combinados juntos). É muito semelhante a como o comandoxargsfunciona, portanto, ele usa o máximo de argumentos por comando para evitar exceder o limite máximo de argumentos por linha.Exemplo:
$ find /etc/rc* -exec echo Arg: {} '+' Arg: /etc/rc.common /etc/rc.common~previous /etc/rc.local /etc/rc.netbootThe command line is built by appending each selected file name at the end.
Only one instance of
{}is allowed within the command.
Veja também: