Não faça isso operando diretamente em {}
.
Você usou inline sh
, então passe {}
como argumento para ele, e também não precisa usar basename
:
find "$R" -name "*.cpp" -type f -exec sh -c '
for f do
mv -- "$f" "${f%.*}.cc"
done
' sh {} +
Note que você tem que aspas duplas $R
, caso contrário, isso leva a segurança vulnerável.