Tudo o que você precisa é remover .gif
de $f
e colocá-lo de volta em:
for f in *; do mv -v -- "$f" "$(date -d "${f%%.gif}" '+%Y%m%d%H%M')".gif; done
${f%%.gif}
usa a variável f
e remove a última ocorrência (portanto, #
duas vezes) de .gif
, portanto, mesmo um nome de arquivo estranho como 1.gif2.gif
obteria apenas seu último .gif
removido. Este incrível recurso é chamado de Expansão de Parâmetros Bash e quando você procura por este nome, você pode ler tudo sobre o seu poder deslumbrante, e. g. em este FAQ do Bash - é capaz de muito mais!