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