Cambie el nombre de las fotos por lotes por fecha de creación en Mac OS X usando Bash que no funciona con espacios

Cambie el nombre de las fotos por lotes por fecha de creación en Mac OS X usando Bash que no funciona con espacios

He estado buscando una solución sobre cómo cambiar el nombre de las fotos por lotes en Mac OS X. He encontrado muchas soluciones, pero la mayoría de ellas no funcionan si el archivo tiene un espacio o si quiero poner un espacio. en el nombre del archivo.

Por ejemplo encontré este script:

for i in *.jpg; do newname=$(stat -t %Y-%m-%d_%H.%M.%S -f %Sm -- $i); mv -- $i $newname.jpg; done

El script funciona siempre y cuando no coloque un espacio en el nombre del archivo final (quiero un espacio en el nombre del archivo porque he estado cambiando el nombre de mis archivos con espacios durante los últimos 3 años en Windows). Y también se rompe si el archivo en sí tiene un espacio. Entonces, si tengo una foto llamada "Hello World.jpg", no será procesada.

¿Alguien tendría una solución para esto, por favor? Preferiblemente, eso no requiere ningún software adicional (solo quiero poder copiar y pegar ese script cada vez que cambio de máquina).

¡Gracias!

Respuesta1

Necesita utilizar comillas en sus sustituciones:

for i in *.jpg; do newname="$(stat -t %Y-%m-%d_%H.%M.%S -f %Sm -- "$i")"; mv -- "$i" "$newname.jpg"; done

Deben tener comillas dobles para permitir la variable y $()la expansión.

Respuesta2

Normalmente sería suficiente con sustituir $ipor "$i".

información relacionada