Você pode usar find
e xargs
:
$ find some_folder -type f -name "*.bub" |
sed "s/\.bub$//" |
xargs -I% mv -iv %.bub %.aaa
'some_folder/a.bub' -> 'some_folder/a.aaa'
'some_folder/v.bub' -> 'some_folder/v.aaa'
'some_folder/dr.bub' -> 'some_folder/dr.aaa'
'some_folder/catpictures/or.bub' -> 'some_folder/catpictures/or.aaa'
'some_folder/catpictures/on.bub' -> 'some_folder/catpictures/on.aaa'
... que você poderia generalizar para uma função bash:
$ extmv () {
find "${1}" -type f -name "*.${2}" |
sed "s/\.${2}$//" |
xargs -I% mv -iv "%.${2}" "%.${3}"
}
... que você usaria assim:
$ extmv some_folder/ bub aaa