¿Cómo renombrar imágenes por lotes, en orden numérico inverso?

Mi cámara nombra sus imágenes IMG_0001.jpg, IMG_0002.jpg, IMG_0003.jpg, etc.

Tengo unas mil imágenes y me gustaría renombrarlas sin tener que hacerlo manualmente si es posible.

¿Existe una buena forma de automatizar el proceso de renombrarlos en orden inverso, por ejemplo, IMG_0003.jpg, IMG_0002.jpg, IMG_0001.jpg?

¿Obtuviste una respuesta a tu pregunta? Es importante que el sitio acepte una respuesta si funciona para sus necesidades. No solo ayuda a otros con la misma pregunta, sino que recompensa al que responde además de los votos a favor que la comunidad le ha dado.
Lo siento, todavía no he tenido la oportunidad de probarlo. Aceptaré uno cuando lo averigüe.
Gracias. También puedes aceptar la respuesta más útil y comentar que no has tenido tiempo de probar. Si cambia, siempre puede cancelar la aceptación de una respuesta y eliminar un comentario que no esté actualizado. Saludos y gracias por mantener el sitio alimentado con comentarios.

Respuestas (5)

Puede utilizar un flujo de trabajo de Automator.

Algo como esto:

ingrese la descripción de la imagen aquí

El paso Ordenar elementos del buscador ordenará los nombres de las imágenes de forma descendente (IMG_0003.jpg, IMG_002.jpg, IMG_001.jpg).

Hacer paso secuencial los renombrará secuencialmente (IMG_0001.jpg, IMG_0002.jpg, ...).

El paso Copiar elementos del buscador es opcional, solo para asegurarse de no alterar los archivos originales.

amaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

Aquí hay otro script de shell. Puede guardarlo como un archivo de texto normal y luego ejecutarlo bash /path/to/script.shdesde la Terminal. Elimine el echopara cambiar el nombre de los archivos.

cd ~/Pictures/
IFS=$'\n' # the input field separators include space by default
i=1
for f in $(ls -r IMG*.jpg); do 
    echo mv "$f" "IMG_$(printf %04d $i)".jpg
    (( i++ ))
done

Prueba esto en la Terminal:

mkdir new
ls IMG* > 1
sort -r < 1 > 2
paste 1 2 | awk '{ print "mv " $1 " new/" $2} ' > 3
. 3

Los archivos renombrados estarán en la newcarpeta.

Aquí hay una breve explicación de cómo funciona esto: crea un script llamado 3que hace el cambio de nombre. Para eso crea un listado de las imágenes en orden alfabético 1y en orden inverso en 2. Luego, se lee una línea de cada archivo y se combina en un mvcomando, que se ejecuta cuando ejecuta 3. Las imágenes se renombran en la newcarpeta para evitar colisiones.

La respuesta lhf gavin fue correcta, pero antes del paso 5, chmod +x 3primero debe ejecutar.
Considere explicar qué hace cada paso del guión

Name Mangler ($ 10 y tiene una versión de prueba gratuita) o Name Changer (gratis / donationware) también es muy bueno para este tipo de cosas si buscas una aplicación agradable y simple.

Mi favorito personal es A Better Finder Rename macupdate.com/app/mac/6322/a-better-finder-rename

Puede usar el script perl rename.pl que se encuentra en la web (por ejemplo, desde aquí ) y ponerlo en la carpeta con sus archivos de imagen.

Su uso es simple y documentado y es bastante poderoso. Para usarlo en su caso, reemplácelo MAXIMUM_NUMBERpor el número en la última foto, luego ejecute:

perl rename.pl 's/IMG_0+(\d+)/"A_IMG_".sprintf("%04d",(MAXIMUM_NUMBER- $1))/xe' *.jpg && perl rename.pl 's/A_//' *.jpg

Para explicar:

  1. El primer cambio de nombre (antes de &&) cambiará el nombre de todos los archivos a MAXIMUM_NUMBER menos el número que ya está en el nombre del archivo. También agregará un prefijo al nombre del archivo A_para evitar sobrescribir archivos ya existentes.
  2. El segundo cambio de nombre simplemente elimina el A_de los nombres de archivo.

Tenga en cuenta que el script rename.pl puede hacer mucho más que eso si alguna vez necesita un cambio de nombre más complejo.