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.netboot
All following arguments to
find
are 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 comandoxargs
funciona, 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.netboot
The 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: