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

0

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

  • screen1.png
  • screen2.png
  • screen3.png
  • screen4.png
  • screen5.png
  • screen6.png
  • screen7.png
  • screen8.png

Agora, se eu fosse qual fosse o motivo, era renomear esses arquivos para que a numeração começasse de 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 eu tentei renomear screen1.png para screen2.png como já existe um arquivo com esse nome.

É assim que gosto de nomear os arquivos quando faço uma série de capturas de tela no Windows. Então, eu posso me encontrar nesse tipo de situações, às vezes. Eu poderia ter pulado uma captura de tela, talvez uma que mostre algum processo de instalação que, com o tempo, ocorra antes da captura de tela 5, mas após a captura de tela 4. Teria que ser o número 5, mas para salvá-lo eu teria que renomear screen5.png para screen6.png e todos os arquivos que se seguem, para colocá-los em ordem cronológica.

Renomear:

  • screen1.png
  • screen2.png
  • screen3.png
  • screen4.png
  • screen5.png > screen6.png
  • screen6.png > screen7.png
  • screen7.png > screen8.png
  • screen8.png > screen9.png

Resultado:

  • screen1.png
  • screen2.png
  • screen3.png
  • screen4.png
  • screen6.png
  • screen7.png
  • screen8.png
  • screen9.png

Arquivo adicionado:

  • screen1.png
  • screen2.png
  • screen3.png
  • screen4.png
  • screen5.png +
  • screen6.png
  • screen7.png
  • screen8.png
  • screen9.png

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

    
por Samir 15.08.2012 / 18:03

2 respostas

0

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

Você pode se tranquilizar executando este 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 o Windows, você teria que usar "no lugar de 'e qq (...) no lugar de" ... ".

    
por 15.08.2012 / 18:49
0

Tudo o que você precisa é de um gerenciador de arquivos com o recurso "Renomeação de vários arquivos" (todos os conflitos de nomes são resolvidos automaticamente). A maioria desses gerentes permite que você edite arquivos no editor externo, onde a edição de números é muito mais rápida do que no gerenciador de arquivos. Pelo menos Total Commander e Unreal Commander tem esse recurso.

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

Você também pode usar um script autônomo para vários renomeamentos de arquivos, como vimv , há scripts mais semelhantes. Eles podem ser configurados para usar outro editor, embora o IMO Vim seja mais adequado do que qualquer outro editor para isso, já que ele tem Plugin VisIncr e comandos de incremento / decremento de número interno ( :help CTRL-A e :help CTRL-X ).

Outra variante é usar vifm , que tem suporte para incrementar / decrementar números em nomes de arquivos selecionados (mesmas chaves no Vim). Mas é um aplicativo de console e principalmente para pessoas dependentes de Vim.

    
por 15.08.2012 / 19:20