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 $i
por "$i"
.