Extensão de vários arquivos Renomear com comando único [duplicado]

2

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.

    
por thewhiteeye 25.03.2015 / 14:16

3 respostas

3

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
    
por heemayl 25.03.2015 / 14:24
2

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.

    
por karel 25.03.2015 / 14:51
1

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"' {} \;
  • o 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.
  • Conclua a extensão do arquivo "${0%.*}.zip" , stripes e anexe .zip ao nome do arquivo.
  • Portanto, mv "$0" "${0%.*}.zip" renomeia o arquivo atual para *.zip .

Observação: remova o comando echo depois de garantir a execução a seco.

    
por devWeek 25.03.2015 / 16:47