fname="2017-11-09-23.00.19-CookingDoughnuts.txt"
ext="${fname##*.}"
name="${fname%.*}"
pref="${name#*-*-*-*-}"
suff="${name%-$pref}"
newfname="$pref-$suff.$ext"
echo "$newfname"
Então aqui está um dos nomes de arquivos como um exemplo.
2017-11-09-23.00.19-CookingDoughnuts.txt
Renomeie para
CookingDoughnuts-2017-11-09-23.00.19.txt
Eu preciso fazer isso em massa para milhares de arquivos, então é um script, a parte do script que eu estou preso é o bit real de renomeação. Mas um script completo pode ser fornecido se facilitar a publicação de uma solução.
Eu posso dizer que o formato datado é o mesmo para todos os arquivos, então o símbolo do quarto traço é sempre o divisor entre a primeira e a segunda parte do nome do arquivo. A data e a hora reais variam e a parte do texto do nome do arquivo também varia.
Não é necessário que a data completa e o registro de data e hora sejam reescritos no novo nome do arquivo, portanto, neste exemplo, o seguinte seria aceitável como resultado.
CookingDoughnuts-2017-11-09-00.00.00.txt
Horas, min e segs podem ser todos de 00, mas a data precisa estar intacta.
fname="2017-11-09-23.00.19-CookingDoughnuts.txt"
ext="${fname##*.}"
name="${fname%.*}"
pref="${name#*-*-*-*-}"
suff="${name%-$pref}"
newfname="$pref-$suff.$ext"
echo "$newfname"