¿Cómo cambiar el nombre de los archivos a través de Terminal utilizando la fecha del archivo como nombre de archivo?

5

Tengo un montón de fotos y videos de diferentes fuentes y quiero normalizar los nombres de los archivos usando Terminal. Miré un montón de herramientas diferentes desde NameChanger hasta Automator y Finder. NameChanger no permite más de una acción a la vez y Finder y Automator no me permiten configurar el formato de fecha con una cadena de formato.

He estado jugando con algunas funciones de bash y encontré que

stat -f "%Sm" -t "%Y-%m-%d %H.%M.%S" file.ext

produce el formato de fecha y hora que busco.

Sin embargo, encontré 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 los scripts de bash, así que disculpa cualquier incompetencia en los ejemplos anteriores.

Lo que quiero hacer es eliminar todo el nombre base del archivo (todo antes de .jpg) y reemplazarlo con el formato de fecha y hora que obtuve de stat anteriormente.

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 necesito hacer esto?

    
pregunta SebinNyshkim 01.07.2017 - 16:51

2 respuestas

6
for f in *.*; do 
    echo mv "$f" "$(stat -f '%Sm' -t '%Y-%m-%d %H.%M.%S' "$f").${f##*.}"
done

O como una sola línea:

for f in *.*; do echo mv "$f" "$(stat -f '%Sm' -t '%Y-%m-%d %H.%M.%S' "$f").${f##*.}"; done

En cualquier caso, elimine el comando echo después de la prueba.

La parte ${f##*.} del comando obtiene la extensión de $f para que pueda usar glob *.* vs. utilizando una extensión en el for f in , es decir, for f in *.* vs. for f in *.jpg

    
respondido por el user3439894 01.07.2017 - 17:38
3
for f in *.jpg; do
    echo mv "$f" "$(stat -f '%Sm' -t '%Y-%m-%d %H.%M.%S' "$f")".jpg
done

Elimine echo una vez que esté seguro de que el comando se ve bien.

    
respondido por el nohillside 01.07.2017 - 17:20

Lea otras preguntas en las etiquetas