¿Por qué find -exec mv {} ./target/ + no funciona?
Quiero saber exactamente qué{} \;
y{} \+
y| xargs ...
do. Aclare esto con explicaciones.
Abajo los 3 comandos se ejecutan y generan el mismo resultado, pero el primer comando lleva un poco de tiempo y el formato también es un poco diferente.
find . -type f -exec file {} \;
find . -type f -exec file {} \+
find . -type f | xargs file
Es porque el primero ejecuta elfile
omando @ para cada archivo proveniente delfind
comando. Entonces, básicamente se ejecuta como:
file file1.txt
file file2.txt
Pero los últimos 2 encuentran con-exec
comandos ejecutan el comando de archivo una vez para todos los archivos como a continuación:
file file1.txt file2.txt
Entonces ejecuto los siguientes comandos en los cuales el primero se ejecuta sin problemas pero el segundo da un mensaje de error.
find . -type f -iname '*.cpp' -exec mv {} ./test/ \;
find . -type f -iname '*.cpp' -exec mv {} ./test/ \+ #gives error:find: missing argument to `-exec'
Para comando con{} \+
, me da el mensaje de error
find: missing argument to `-exec'
¿porqué es eso? ¿Alguien puede explicar qué estoy haciendo mal?