Tengo un montón de fotos y videos de diferentes fuentes y quiero normalizar los nombres de archivo utilizando Terminal. Miré a un montón de diferentes herramientas de Cambiador de nombre a Automator y al propio Finder. NameChanger no permite más de una acción a la vez y Finder y Automator no me permiten establecer el formato de fecha con una cadena de formato.
He estado jugando con algunas funciones de bash y he descubierto que
stat -f "%Sm" -t "%Y-%m-%d %H.%M.%S" file.ext
produce el formato de fecha y hora que busco.
Sin embargo, descubrí que
for file in *.*
do
mv "$file" echo stat -f "%Sm" -t "%Y-%m-%d %H.%M.%S" "$file"
done
devuelve
-bash: syntax error near unexpected token `done'
No soy muy competente con bash scripting así que disculpa cualquier incompetencia en los ejemplos anteriores.
Lo que quiero hacer es eliminar todo el nombre base del archivo (todo lo que precede a .jpg) y sustituirlo por el formato de fecha y hora que obtuve de stat
antes.
Por ejemplo:
20160708_151344000_iOS.jpg --> 2016-07-08 15.13.44.jpg
WP_20140915_02_03_15_Raw.jpg --> 2014-09-15 02.03.15.jpg
¿Cómo tengo que hacerlo?
0 votos
¿Desea que el nombre de archivo movido se cree a partir del resultado de la operación
stat
comando en su OP, o a partir de la información contenida en el propio nombre del archivo?0 votos
Quiero leer el valor de la fecha del archivo desde el sistema de archivos y utilizarlo como nombre de archivo. Después de publicar la pregunta, sin embargo, me di cuenta de que la fecha del sistema de archivos, fecha EXIF y la fecha que ya está en el nombre del archivo (no normalizado) difieren entre sí para algunos archivos. Pero ser capaz de hacer el cambio de nombre de la fecha del sistema de archivos por sí sola es útil para mí, sin embargo, en caso de que sólo tiene la línea de comandos para trabajar.
0 votos
¿Estás seguro de que realmente quieres
*.*
? En DOS esto coincide con todos los archivos, pero en Bash (y en general todos los shells Unix) coincide con todos los nombres de archivo que contienen un punto literal.0 votos
Buen punto pero como tengo que reformular esa condición del bucle para que todo lo que va después del punto