Renomear um monte de arquivos no debian
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 ??p>
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 /' ./*
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.