Batch renomeando arquivos com padrão

6

Eu tenho alguns arquivos com nomes como estes:

63018933.mp4? token = 1325697436_b0c3e70c6e339380b4a484c576a8c287

63808488.mp4? token = 1325697401_4ae5f7a68d93873c8881b303e7655e14

Como renomeio todos eles para, por exemplo, 63018933.mp4 (remover caracteres após mp4)?

    
por hpn 11.01.2012 / 16:07

3 respostas

11

Este pode ser um caminho:

for file in *.mp4\?token*; do mv --no-clobber "$file" "${file%%\?*}"; done
    
por 11.01.2012 / 16:17
8

Se você tiver a ferramenta rename(1) (o que você faz se você tiver um Debian ou um Linux baseado em Debian, incluindo Ubuntu e derivativos):

rename -n 's/\.mp4.*$/.mp4/' *mp4*

Quando estiver convencido de que você tem o padrão correto, basta remover o -n (dry-run) e deixá-lo rodar corretamente.

rename(1) aplicará uma expressão regular Perl aos nomes de arquivo que lhe foram atribuídos.

Observe que na maioria das outras distribuições do Linux, rename é um programa de renomeação de arquivos diferente, o que não ajuda nesse padrão de renomeação específico.

    
por 11.01.2012 / 18:26
5

Há também mmv:

mmv -n "*.mp4*" "#1.mp4"

Remova o "-n" quando a saída parece correta.

    
por 11.01.2012 / 19:58

Tags