Todos os seguintes argumentos para find são considerados argumentos para o comando.
A sequência {}é substituída pelo nome do arquivo atual que está sendo processado.
usando +executará os comandos menos possíveis (como os argumentos são combinados). É muito semelhante à forma como o xargscomando funciona, portanto, ele usará o maior número possível de argumentos por comando para evitar exceder o limite máximo de argumentos por linha.
Não é uma diferença e um dos principais. Veja a resposta de user1116056
Jahid
24
Dado que o comando find fica abaixo de três arquivos:
fileA
fileB
fileC
Se você usar -execcom um +sinal de mais ( ),
find . -type f -exec chmod 775 {} +
será:
chmod 775 fileA fileB fileC
A linha de comando é criada anexando cada nome de arquivo correspondente no final, da mesma maneira que xargscria suas linhas de comando. O número total de chamadas do comando ( chmodneste caso) será muito menor que o número de arquivos correspondentes.
comando -exec {} + Essa variante da ação -exec executa o comando especificado nos arquivos selecionados, mas a linha de comando é criada anexando cada nome de arquivo selecionado no final; o número total de invocações do comando será muito menor que o número de arquivos correspondentes. A linha de comando é construída da mesma maneira que o xargs cria suas linhas de comando. Somente uma instância de '{}' é permitida dentro do comando. O comando é executado no diretório inicial.
man find(1)
muitos detalhes, facilmente encontrado por qualquer pessoa. Não seja preguiçoso.man exec
!{} +
uso antes. I normalmente usar xargs para que (e frequentementefind ... -print0 | xargs -0 ...
)Respostas:
Usando
;
(ponto e vírgula) ou+
(sinal de mais) é obrigatório para encerrar 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-exec
/-execdir
parâmetro . Por exemplo:usando
;
executa vários comandos (separadamente para cada argumento),Exemplo:
usando
+
executará os comandos menos possíveis (como os argumentos são combinados). É muito semelhante à forma como oxargs
comando funciona, portanto, ele usará o maior número possível de argumentos por comando para evitar exceder o limite máximo de argumentos por linha.Exemplo:
Veja também:
man find
fonte
Dado que o comando find fica abaixo de três arquivos:
Se você usar
-exec
com um+
sinal de mais ( ),será:
A linha de comando é criada anexando cada nome de arquivo correspondente no final, da mesma maneira que
xargs
cria suas linhas de comando. O número total de chamadas do comando (chmod
neste caso) será muito menor que o número de arquivos correspondentes.Se você usar
-exec
um ponto-e-vírgula (;
),será:
fonte
Conforme
man find
:fonte