¿Cómo cambio el sufijo de numeración de una serie de nombres de archivos?

¿Cómo cambio el sufijo de numeración de una serie de nombres de archivos?

A continuación se muestra un ejemplo de una serie de archivos con un sufijo de numeración en el nombre del archivo.

  • pantalla1.png
  • pantalla2.png
  • pantalla3.png
  • pantalla4.png
  • pantalla5.png
  • pantalla6.png
  • pantalla7.png
  • pantalla8.png

Ahora, si por cualquier motivo tuviera que cambiar el nombre de estos archivos para que la numeración comience desde 2, tendría que cambiar el nombre de screen1.png a screen2.png, y screen2.png a screen3.png y así sucesivamente. Pero esto ya fallaría en el punto en el que intento cambiar el nombre de screen1.png a screen2.png porque ya existe un archivo con ese nombre.

Así es como me gusta nombrar los archivos cuando hago una serie de capturas de pantalla en Windows. Así que a veces puedo encontrarme en este tipo de situaciones. Es posible que me haya saltado una captura de pantalla, tal vez una que muestre algún proceso de configuración que, con el tiempo, ocurre antes de la captura de pantalla 5 pero después de la captura de pantalla 4. Esa tendría que ser la número 5, pero para guardarla, primero tendría que cambiar el nombre de screen5.png. a screen6.png y todos los archivos que siguen, para obtenerlos en orden cronológico.

Rebautizar:

  • pantalla1.png
  • pantalla2.png
  • pantalla3.png
  • pantalla4.png
  • pantalla5.png > pantalla6.png
  • pantalla6.png > pantalla7.png
  • pantalla7.png > pantalla8.png
  • pantalla8.png > pantalla9.png

Resultado:

  • pantalla1.png
  • pantalla2.png
  • pantalla3.png
  • pantalla4.png
  • pantalla6.png
  • pantalla7.png
  • pantalla8.png
  • pantalla9.png

Archivo agregado:

  • pantalla1.png
  • pantalla2.png
  • pantalla3.png
  • pantalla4.png
  • pantalla5.png+
  • pantalla6.png
  • pantalla7.png
  • pantalla8.png
  • pantalla9.png

¿Existe algún script, herramienta o expresión regular que pueda usar y que me haga la vida más fácil? Estoy seguro de que la mayoría de vosotros, superusuarios, habéis estado en este tipo de situaciones más de una vez. ¿Le importaría compartir su solución al problema?

Respuesta1

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

Puedes tranquilizarte ejecutando esto primero.

$ 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, tendría que usar " en lugar de ' y qq(...) en lugar de "...".

Respuesta2

Todo lo que necesita es un administrador de archivos con la función "Cambio de nombre de varios archivos" (todos los conflictos de nombres se resuelven automáticamente). La mayoría de estos administradores le permiten editar archivos en un editor externo, donde editar números es mucho más rápido que en el administrador de archivos. Al menosComandante totalyComandante irrealtener tal característica.

O puede escribir pequeños scripts de una línea para hacerlo mediante Shell.

También puede utilizar un script independiente para cambiar el nombre de varios archivos comovimv, hay más guiones similares. Se pueden configurar para usar otro editor, aunque en mi opinión Vim es más adecuado para eso que cualquier otro editor, ya que tieneComplemento VisIncry comandos integrados de incremento/disminución de números ( :help CTRL-Ay :help CTRL-X).

Otra variante es utilizarvifm, que admite incrementar/disminuir números en los nombres de archivos seleccionados (las mismas teclas que en Vim). Pero es una aplicación de consola y principalmente para personas adictas a Vim.

información relacionada