Os parâmetros {} \;
e {} +
funcionam apenas no fim do comando, da mesma forma que xargs
funciona.
Este não é um problema do Solaris.
Os exemplos dentro de rename.pl
mostram claramente os nomes dos arquivos no final do comando.
Tente:
find /tmp -name '*.com*' -exec ./rename.pl \
's/\Q$ENV{NAME_THAT_WE_WANT_TO_CHANGE}\E/$1$ENV{NEW_NAME}$2/' {} +
"@" e "." Não conte um caractere especial neste contexto. Você precisa de find -print0
e xargs -0
para lidar de maneira robusta com todos os nomes de arquivos (por exemplo, com novas linhas incorporadas no nome).
Você também pode usar o mesmo método find ...| xargs ...
no Solaris, embora sem as opções "0", a menos que você instale os findutils do GNU e use gfind
e gxargs
como também sugerido por @vonbrand.