Para fazer um loop em vários grupos de arquivos no bash, basta especificar todos eles na lista for.
Se não houver nenhum arquivo que corresponda a um grupo (por exemplo, nenhum arquivo * .webm), o para ainda fará um loop uma vez (com o grupo spec (* .webm) como um valor da variável i ). Se você quiser evitar que você precise definir a opção nullglob : < br> shopt -s nullglob
Para remover uma extensão de um nome de arquivo (que tem uma extensão!) use este expansão de parâmetros :
${i%.*}
Seu script ficaria assim:
shopt -s nullglob
for i in *.m4a *.webm; do
echo "Converting file $converted / $numfiles : $i"
ffmpeg -hide_banner -loglevel fatal -i "$i" "./mp3/${i%.*}.mp3"
mv "$i" ./done
converted=$((converted + 1))
done