Como faço para mover números em nomes de arquivos, em uma operação de renomeação em lote?

10

Eu tenho tentado descobrir como renomear arquivos nas últimas horas.

Eu tenho 2000 arquivos que são assim:

file.1.pdb
file.2.pdb
file.3.pdb

Eu gostaria de renomear esses arquivos para algo como:

file.pdb.1
file.pdb.2
file.pdb.3
    
por user812758 29.03.2018 / 17:33

6 respostas

15

Se você tiver rename instalado, poderá usar

rename -n 's/(\.\d+)\.pdb$/.pdb$1/' *.pdb   # just watch what WOULD happen
rename    's/(\.\d+)\.pdb$/.pdb$1/' *.pdb   # actually rename the files

O comando rename pode ser instalado via

sudo apt install rename
    
por PerlDuck 29.03.2018 / 18:00
11

Por meio de mmv (renomeie vários arquivos com padrões de caractere curinga) é fácil :

mmv '*.*.*' '#1.#3.#2' *.pdb

ou zmv de zsh shell; é um módulo que permite renomear; veja Exemplos do ZMV :

zmv -w '*.*.*' '$1.$3.$2' *.pdb
    
por devWeek 29.03.2018 / 19:59
10

Usando Perl rename :

rename -n 's/(\.\d+)(\.pdb)/$2$1/' *.pdb

Explicação rápida:

  • *.pdb Corresponde todos os arquivos que terminam com .pdb . (Feito pelo shell)
  • (\.\d+) Corresponde um ponto literal e, em seguida, um ou mais dígitos decimais. Os parênteses criam um grupo de correspondência.
  • $2$1 Inverte o primeiro e o segundo grupos de correspondência.
  • -n Nenhuma ação (simular). Se a saída parecer boa, execute o comando novamente sem este sinalizador.
por wjandrea 29.03.2018 / 17:59
7

Você pode usar este script:

for i in 'seq 1 2000'; do
mv file.$i.pdb file.pdb.$i
done

Ou este comando fácil de copiar e colar:

for i in 'seq 1 2000'; do mv file.$i.pdb file.pdb.$i; done

Para usar os comandos acima, coloque todos os 2000 arquivos em uma pasta e, em seguida, abra o terminal nesse diretório e, em seguida, execute o comando acima nele.

    
por Ali Razmdideh 29.03.2018 / 17:44
5

Recentemente, o nautilus, o gerenciador de arquivos padrão, recebeu uma caixa de diálogo de renomeação em lote. Ainda não é poderoso o suficiente para fazer o que você quer. Mas, felizmente, existe o thunar, um gerenciador de arquivos alternativo que pode ser instalado. Com o thunars renomear a caixa de diálogo, você pode fazer o que quiser usando a GUI.

Primeiro, instale o thunar:

sudo apt install thunar

Comece o thunar, navegue ao diretório que tem seus arquivos. Em seguida, selecione todos eles. Pressione F2 .

Na caixa de diálogo exibida, selecione novamente todos os arquivos. Altere o modo para "Pesquisar e substituir" e para "Nome e Sufixo". Marque "Expressão Regular". Agora, use os seguintes itens como padrões de pesquisa e substituição:

file\.(.+)\.pdb

e

file.pdb.$1

Por fim, clique no botão renomear.

A vantagem dessa maneira é que você obtém uma prévia visual do que acontecerá antes de realmente renomear.

    
por Sebastian Stark 30.03.2018 / 12:10
3

Você pode usar rename de util-linux para isso (o comando é chamado rename.ul no ubuntu):

rename.ul .pdb '' *
rename.ul "file." "file.pdb." *

Isso primeiro remove a extensão .pdb do final e depois a insere novamente no meio.

    
por user812791 29.03.2018 / 19:31