Como altero o sufixo de numeração para uma série de nomes de arquivos?

Como altero o sufixo de numeração para uma série de nomes de arquivos?

Aqui está um exemplo de uma série de arquivos com um sufixo de numeração no nome do arquivo.

  • tela1.png
  • tela2.png
  • tela3.png
  • tela4.png
  • tela5.png
  • tela6.png
  • tela7.png
  • tela8.png

Agora, se por qualquer motivo eu renomeasse esses arquivos para que a numeração começasse em 2, eu teria que renomear screen1.png para screen2.png, e screen2.png para screen3.png e assim por diante. Mas isso já falharia no ponto em que tento renomear screen1.png para screen2.png, pois já existe um arquivo com esse nome.

É assim que gosto de nomear os arquivos ao fazer uma série de capturas de tela no Windows. Então, às vezes, posso me encontrar nesse tipo de situação. Posso ter pulado uma captura de tela, talvez uma que mostre algum processo de configuração que, com o tempo, ocorre antes da captura de tela 5, mas depois da captura de tela 4. Esse teria que ser o número 5, mas para salvá-lo, primeiro eu teria que renomear screen5.png para screen6.png e todos os arquivos a seguir, para colocá-los em ordem cronológica.

Renomear:

  • tela1.png
  • tela2.png
  • tela3.png
  • tela4.png
  • tela5.png > tela6.png
  • tela6.png > tela7.png
  • tela7.png > tela8.png
  • tela8.png > tela9.png

Resultado:

  • tela1.png
  • tela2.png
  • tela3.png
  • tela4.png
  • tela6.png
  • tela7.png
  • tela8.png
  • tela9.png

Arquivo adicionado:

  • tela1.png
  • tela2.png
  • tela3.png
  • tela4.png
  • tela5.png+
  • tela6.png
  • tela7.png
  • tela8.png
  • tela9.png

Existe um script, uma ferramenta ou uma expressão regular que eu possa usar e que tornaria minha vida mais fácil? Tenho certeza de que a maioria de vocês, superusuários, já passou por esse tipo de situação mais de uma vez. Você gostaria de compartilhar sua solução para o problema?

Responder1

$ perl -e 'for $i (reverse 5..8) { $j=$i+1; rename screen$i.png screen$j.png }

Você pode se tranquilizar executando isso primeiro

$ perl -e 'for $i (reverse 5..8) { $j=$i+1; print "rename screen$i.png screen$j.png\n" }'
rename screen8.png screen9.png
rename screen7.png screen8.png
rename screen6.png screen7.png
rename screen5.png screen6.png

Para Windows você teria que usar " no lugar de ' e qq(...) no lugar de "...".

Responder2

Tudo que você precisa é de um gerenciador de arquivos com o recurso "Renomear vários arquivos" (todos os conflitos de nome são resolvidos automaticamente). A maioria desses gerenciadores permite editar arquivos em um editor externo, onde a edição de números é muito mais rápida do que no gerenciador de arquivos. Pelo menosComando totaleComandante Irrealpossuem tal recurso.

Ou você pode escrever pequenos scripts de uma linha para fazer isso por meio do shell.

Você também pode usar um script independente para renomear vários arquivos, comovimv, existem mais scripts semelhantes. Eles podem ser configurados para usar outro editor, embora o IMO Vim seja mais adequado para isso do que qualquer outro editor, já que possuiPlug-in VisIncre comandos internos de incremento/decremento de número ( :help CTRL-Ae :help CTRL-X).

Outra variante é usarvifm, que tem suporte para aumentar/diminuir números em nomes de arquivos selecionados (mesmas chaves do Vim). Mas é um aplicativo de console e principalmente para pessoas viciadas em Vim.

informação relacionada