bash, arquivos, renomear arquivos, trocar posições

Dec 22 2020

Como renomear

sluno-20201027-call-metroua-status.mp4
sluno-20201103-call-deriva.mp4
sluno-20201103-call-metroua-status.mp4
sluno-20201105-call-makrocz.mp4
sluno-20201105-call-metroua-testcall.mp4
sluno-20201105-call-sluno-ggtabak.mp4
sluno-20201110-call-makrocz.mp4
sluno-20201110-call-metroua-status.mp4
sluno-20201110-call-sluno-utccz.mp4

para

sluno-call-metroua-status-20201027.mp4
sluno-call-deriva-20201103.mp4
sluno-call-metroua-status-20201103.mp4
sluno-call-makrocz-20201105.mp4
...

Simplesmente mova a data / string na posição 7-14para o final do nome do arquivo.

Obrigado.

Respostas

7 bac0n Dec 22 2020 at 22:04

mmv funciona bem para renomear arquivos descomplicados .

mmv '*-*-*-*.mp4' '#1-#3-#4-#2.mp4'

Também pode ser útil ter mais alguns pontos de referência para certificar-se de não alterar o nome em outra coisa, especialmente onde pode haver outros arquivos no mesmo diretório.

mmv 'sluno-[0-9]*-call-[a-z]*.mp4' 'sluno-call-#3#4-#1#2.mp4'
             ^  ^        ^  ^
             1  2        3  4

sluno-20201027-call-metroua-status.mp4
      ^-------      ^-------------
      1   2         3       4

Se eu fosse fazer isso com o mínimo, mve basheu iria com um para-loop e bashbuiltin BRE correspondente.

for i in *.mp4; do \
    [[ $i =~ ^sluno-(.*)-call-(.*).mp4 ]] && \ mv -- "$i" "sluno-call-${BASH_REMATCH[2]}-${BASH_REMATCH[1]}.mp4"; \
done
4 pLumo Dec 22 2020 at 20:46

Use rename:

rename -n 's/^(.*?)-(.*?)-(.*?)(\.mp4)$/$1-$3-$2$4/' *.mp4

Remova o -nse estiver satisfeito com a saída.

Para obter uma explicação, visite este .

JohnP Dec 30 2020 at 01:47

Outra opção:

$ qmv {pattern}

irá colocar 2 colunas de nomes de arquivos em seu editor de escolha.

Modifique a coluna certa para ter os nomes de arquivo que você deseja.

A coluna da esquerda é o nome original. A coluna inicial do grupo certo não pode ser alterada, então a quebra automática pode atrapalhar.

Nas mãos de um especialista em cada editor, isso pode ser muito rápido, especialmente para colunas vim e modos visuais.

Em geral, eu uso renomear, mas para necessidades complexas, ver os nomes exatos no editor é bom.