Ну, вы можете сделать это как без временной переменной:
for F in $( find /foo/bar -name "*.ext" ); do
cp $F "$(sed 's/\.[^.]\+$/.tmp/;s/bar/b0r/' <<< $F)"
done
Но это два новых процесса.С простым расширением переменных, я думаю, вам нужна эта переменная.
Редактировать : благодаря @ glenn jackman теперь это еще один дополнительный процесс.
Edit2 : bash
только с одной переменной вида:
for F in $( find /foo/bar -name "*.ext" ); do
F=${F/.ext/}
cp ${F}.ext ${F/bar/b0r}.tmp
done