Ou você poderia usar o bash puro ... (exceto para mv, isto é ..)
for file in *.htm; do mv "$file" "${file%.htm}.html"; done
e evite as coisas desagradáveis do nome de base. ;)
O Bash tem um extenso conjunto de opções de expansão variável. O usado aqui, '%', remove o menor sufixo correspondente do valor da variável. O padrão é um padrão glob, então ${file%.*}
também funcionaria. O operador '%%' remove o maior sufixo correspondente e é intercambiável no exemplo acima, pois o padrão é fixo, ${file%%.*}.html
transformaria a.b.htm em a.html.
Veja a seção de substituições de variáveis na manpage bash para mais truques. Há muita coisa que pode ser feita diretamente no bash.