Qual é o +
em find /path/ -exec command '{}' +
tarefas? em oposição afind /path/ -exec command '{}' \;
Qual é o +
em find /path/ -exec command '{}' +
tarefas? em oposição afind /path/ -exec command '{}' \;
Respostas:
O '+' cria uma grande linha de comando de todos os arquivos encontrados para minimizar o número de comandos a serem executados.
Dado o caso em que um comando find encontra quatro arquivos.
find . -type f -exec command '{}' \;
produziria
command file1
command file2
command file3
command file4
Por outro lado
find . -type f -exec command '{}' \+
produz
command file1 file2 file3 file4
Na página do manual:
comando -exec {}
Essa variante da ação -exec executa o comando especificado nos arquivos selecionados, mas a linha de comandos é 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. Apenas uma instância de `{} 'é permitida dentro do comando. O comando é executado no diretório inicial.
find
me dá um semi.
xargs
,-exec … {} +
faz o mesmo que-print | xargs …
, mas sem os problemas de citação (-print0 | xargs -0
é outra maneira, mas é menos portátil).