Tente:
rename 's/zip[^.]*$/zip/' /path/to/directory/containing/the/files/*
Exemplo:
$ ls
bar.zip2 egg.zip4 foo.zip1 spam.zip3 test.zip_
$ rename 's/zip[^.]*$/zip/' *
$ ls
bar.zip egg.zip foo.zip spam.zip test.zip
Recebi alguns arquivos importantes por email. Existem cerca de 150 arquivos como estes. As extensões dos arquivos são nomeadas como zip1, zip2, zip3, zip_ etc. Eu só quero alterar a extensão desses arquivos de volta para zip usando um único comando para evitar a tarefa manual de renomear cada arquivo.
Tente:
rename 's/zip[^.]*$/zip/' /path/to/directory/containing/the/files/*
Exemplo:
$ ls
bar.zip2 egg.zip4 foo.zip1 spam.zip3 test.zip_
$ rename 's/zip[^.]*$/zip/' *
$ ls
bar.zip egg.zip foo.zip spam.zip test.zip
Esta tarefa de renomeação múltipla é fácil de usar usando pyRenamer do Ubuntu Software Center. A captura de tela a seguir explica como fazer isso:
Eu sei que não é a maneira de fazê-lo no terminal como você pediu, mas esta é uma maneira alternativa de fazer isso que você pode achar mais fácil porque você pode navegar para os arquivos a serem renomeados na janela pyRenamer em vez de digitar o caminho.
Use o comando mmv
(instale por sudo apt-get install mmv
) :
mmv -n '*.zip*' '#1.zip'
Primeiro * corresponde a tudo antes de .zip e o segundo * corresponde a tudo depois de .zip e eles se tornam um grupo de correspondências com referência anterior #1
e #2
respectivamente. E só mantemos o primeiro com .zip no final.
Observação: Com o uso da opção -n
, o comando mmv
é executado como seco, portanto, remova-o para executar renomeação real.
Ou através da combinação de find
e mv
comandos:
find source/dir -type f -name '*.zip*' -exec sh -c 'echo mv "$0" "${0%.*}.zip"' {} \;
source/dir
especifica o caminho do diretório de origem. -type f
pesquisas apenas em f . -name '*.zip*'
encontra esse tipo de arquivo que seus nomes são como '* .zip *' {}
representa o arquivo atual. "${0%.*}.zip"
, stripes e anexe .zip
ao nome do arquivo. mv "$0" "${0%.*}.zip"
renomeia o arquivo atual para *.zip
. Observação: remova o comando echo
depois de garantir a execução a seco.