Por que encontrar -exec mv {} ./target/ + não funciona?
Eu quero saber exatamente o que{} \;
e{} \+
e| xargs ...
Faz. Esclareça-os com explicações.
Abaixo 3 comandos executam e produzem o mesmo resultado, mas o primeiro comando demora um pouco e o formato também é um pouco diferent
find . -type f -exec file {} \;
find . -type f -exec file {} \+
find . -type f | xargs file
É porque o primeiro executa ofile
para cada arquivo proveniente dofind
comando. Então, basicamente, é executado como:
file file1.txt
file file2.txt
Mas depois, 2 encontre com-exec
s comandos @ executam o comando file uma vez para todos os arquivos como abaixo:
file file1.txt file2.txt
Então eu executo os seguintes comandos nos quais o primeiro é executado sem problemas, mas o segundo gera uma mensagem de err
find . -type f -iname '*.cpp' -exec mv {} ./test/ \;
find . -type f -iname '*.cpp' -exec mv {} ./test/ \+ #gives error:find: missing argument to `-exec'
Para o comando com{} \+
, dá-me a mensagem de erro
find: missing argument to `-exec'
por que é que? alguém pode explicar o que estou fazendo de errado?