Aqui está uma maneira de fazer isso no Bash:
for i in *; do [ "${i/%MP3/mp3}" != "$i" ] && echo "$i" "${i/%MP3/mp3}"; done
Eu usei echo aqui para que o comando não faça nada além de imprimir pares de nomes de arquivos. Se essa lista representa as alterações que você deseja fazer, você pode alterar echo para algo como mv -i -- , que moverá seus arquivos (e avisará você antes de sobrescrever).
Breve Explicação:
O for itera em todos os arquivos correspondidos por * . Em seguida, determinamos se a extensão já é minúscula, se formos prosseguir, se não for, prosseguiremos para movê-la (ou fazê-la ecoar, conforme o caso). Isso usa as operações internas de string do Bash sobre as quais você pode ler aqui: link