Pergunta

Eu tenho milhares de arquivos que eu preciso para mudar o nome com o seguinte formato. 2008: 09: 18: 17: 45:. 48 Alfanumeric-alfanumeric.wav a primeira parte é uma data

Ex. 2008: 09: 18: 17: 45: 48-703-s.wav

Um quiser renomeá-lo para:

20080918.174548.703.s.wav

Basicamente para remover o ':'. E fazer um formato legível mais humano e mais fácil de divisão

Eu sei que renomeação é o que estou procurando, mas o regex não está funcionando. Estou digitando:

renomeação 'S / (\ d): (\ d): (\ d): (\ d): (\ d): - (.?) - (\ d) WAV / $ 1 $ 2 $ 3. $ 4 (.?). $ 5 $ 6. $ 7. $ 8.wav /' ./*

Foi útil?

Solução

Você precisa considerar multiplicidades:

rename 's/(\d+)\:(\d+)\:(\d+)\:(\d+)\:(\d+)\:(\d+)-(.*)-(.?).wav/$1$2$3.$4$5$6.$7.$8.wav/' ./*

Outras dicas

rename 's/(\d+):(\d+):(\d+):(\d+):(\d+):(\d+)-([^-]+)-([^.]+).wav/$1$2$3.$4$5$6.$7.$8.wav/' ./*

deve ser usado - em sua versão que você sempre corresponder apenas um dígito. Além disso, não há necessidade de escapar do:.

Se isto é algo que você está indo só para fazer uma vez, eu faria isso desta maneira:

1) ls os arquivos em um novo arquivo: ls datadir> mytmp 2) editar o mytmp com seu editor favorito. 2a excluir quaisquer linhas que não são arquivos de dados que lhe interessam, como "". e ".." editar 2b cada linha em um comando para renomear o arquivo. Eu gosto emacs, e iria construir uma macro teclado para: juntar o nome do arquivo, inserir "mv", insira o nome do ficheiro, inserir espaço, inserir o nome do ficheiro de novo, editar o nome do arquivo inserido no o formato desejado. 2c save 3) executar sh

Feito! Não elegante, tedioso se o seu editor não suporta macros ou funcionalidade semelhante, mas a garantia de trabalho e git-er-feito.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top