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.