3 votos

¿Cómo puedo renombrar una lista ordenada de archivos con una lista ordenada de nombres de archivos?

Tengo una serie de archivos. Necesito aplicar una serie de nombres de archivo.

Así que,

  • 001.jpg -> apple.jpg
  • 002.jpg -> plátano.jpg
  • 003.jpg -> naranja.jpg
  • etc.

Tendré que repetir esto para cada una de las 16 carpetas con 292 archivos por carpeta. Los archivos estarán siempre en el orden numerado correcto, pero no siempre con los mismos nombres (la primera serie será 001.jpg-292.jpg, luego 293.jpg-584.jpg, etc.). Los nombres suministrados serán los mismos para los archivos de las 16 carpetas.

Veo que esto es posible (¡y bastante fácil!) con aplicaciones como Un mejor renombramiento del buscador pero no me apetece gastar los 20 dólares en todas esas funciones sólo para hacer una cosa que no espero tener que volver a hacer :D

Entonces, ¿hay algún tipo de opción gratuita, como Automator, un Applescript, o un shell script?

He encontrado varios shell scripts que repiten la misma acción para todos los archivos, pero no sé lo suficiente como para editarlos y suministrar un nuevo nombre para cada operación de renombrado :(

Incluso si tengo que hacer un script de más de 292 líneas, codificando la lista de nombres en él, sería más fácil que renombrarlas manualmente en el buscador una por una.

2voto

Por ejemplo, guarde este archivo como filenames.txt :

apple
banana
orange

A continuación, abra el Terminal y ejecútelo:

a=($(<filenames.txt));for d in *;do i=0;for f in $d/*;do echo mv $f $d/${a[i++]}.jpg;done;done

Eliminar echo si la salida se ve bien.

Si los nombres de los archivos contienen espacios, añada IFS=$'\n'; al principio y añade comillas dobles alrededor de las variables.

0 votos

Gracias. Esto casi funciona. El único problema es que utiliza el primer nombre en filenames.txt para los 292 archivos. ¿alguna idea?

0 votos

¿Cambiaste el directorio de trabajo a la carpeta que contiene las otras carpetas? O si necesitas ejecutar el script en cada carpeta por separado, elimina el for d in *; parte y ;done desde el final.

0 votos

Edité el comando y terminé con una salida como "mv 001.jpg apple.jpg; mv 002.jpg apple.jpg; mv 003.jpg apple.jpg " etc.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X