Com o rename do Perl (comando autônomo):
rename -n 's/(.*)_(.*)-(.*)-(.*)_(.*.pdf)/$1_$4-$3-$2_$5/' *.pdf
Se tudo parecer bem, remova -n
.
Estou tentando renomear uma pasta com arquivos que contenham um registro de data assim:
string_DD-MM-YYYY_hhmm.pdf
para este formato:
string_YYYY-MM-DD_hhmm.pdf
para que eles classifiquem por data quando classificados por nome de arquivo.
Exemplo: PB_KAZ_KtoNr_0463266665_01-02-2014_0341.pdf
deve se tornar PB_KAZ_KtoNr_0463266665_2014-02-01_0341.pdf
.
Eu encontrei este pergunta semelhante mas é em relação ao formato DDMMYYYY em vez de DD-MM-AAAA e as respostas são complicadas para a minha situação. Como o string
é sempre o mesmo em conteúdo e comprimento (24 caracteres), um comando simples, que divide e reagrupa a string por posições, seria suficiente.
Obrigado antecipadamente!
Este é um método bruto, especialmente se houver muitos arquivos, mas o mais básico é o awk:
Assume-se que você não possui nenhum outro pdf na pasta, exceto os caracteres string_DD-MM-YYYY_hhmm.pdf, e essa parte string_ tem 24 caracteres.
cd
para a pasta e, em seguida, execute isto:
for i in *.pdf; do mv $i '\ls -1 $i | awk '{print substr ($0, 0, 24)}'''\ls -1 $i | awk -F[_.] '{print$(NF-1)}'| awk -F- '{print$3"-"$2"-"$1}''.pdf; done