Você pode usar a função -printf
de find
para construir seus comandos:
find /tmp -name "*.ext" -printf "mv %p %h/new_name.ext"
mv /tmp/foo.ext /tmp/new_name.ext
Quando você colocar o comando com $()
, os comandos serão executados:
$(find /tmp -name "*.ext" -printf "mv %p %h/new_name.ext")
find /tmp -name "*.ext"
/tmp/new_name.ext
Atualização:
O comando acima não funciona corretamente em vários arquivos e não usa valores de aspas. Use o comando abaixo:
find /tmp -name \*.ext\*
/tmp/dir with space/bar.ext
/tmp/foo.ext
bash -x < <(find /tmp -name "*.ext" -printf "mv \"%p\" \"%h/new_name.ext2\"\n")
+ mv '/tmp/dir with space/bar.ext' '/tmp/dir with space/new_name.ext2'
+ mv /tmp/foo.ext /tmp/new_name.ext2
find /tmp -name \*.ext\*
/tmp/dir with space/new_name.ext2
/tmp/new_name.ext2