Você pode usar a expansão Parâmetro para extrair partes das cadeias. #
é removido da esquerda, %
é removido da direita, o dobro do símbolo remove a correspondência mais longa possível.
#! /bin/bash
for f in ABCD_20181102.jpg DEDE_2_20181030.jpg ; do
suffix=${f#*.}
before_underscore=${f%%_*}
after_underscore=${f#*_}
after_underscore=${after_underscore%.$suffix}
if [[ $after_underscore = *_* ]] ; then
before2=${after_underscore%_*}
after2=${after_underscore#*_}
after_underscore="$after2"_"$before2"
fi
echo mv "$f" "$after_underscore"_"$before_underscore.$suffix"
done
Basta remover o echo
antes de mv
depois de verificar se o script faz o que você precisa.