Tengo un montón de archivos que tienen nombres como MOV001.mpg, MOV002.mpg, etc. Todos tienen fecha y hora diferentes.
¿Cómo puedo cambiarles el nombre para que se conviertan en 2012 08 05 13 45 33 MOV001.mpg, 2012 09 02 23 45 07 MOV002.mpg, etc.?
En otras palabras, ¿cómo puedo extraer la información de fecha y hora de los archivos cuyo nombre cambio?
Muchas gracias de antemano.
Respuesta1
No probado:
for f in *.mpg; do
mv "$f" "$(stat -f "%m" -t "%Y %m %d %H %M %S" "$f") $f"
done
stat -f "%m"
debe producir la última fecha de modificación del archivo, -t "%Y %m %d %H %M %S"
debe formatear la fecha de acuerdo con sus requisitos.
Respuesta2
La pregunta original especifica que los archivos resultantes también terminan con una extensión de archivo. Para hacer esto de forma portátil, en bash, tome la extensión incorporada /path/to/file.ext
, ${f##*.}
lo que dará como resultado una sola línea de:
for f in *.FOO; do mv "$f" "$( /usr/bin/stat -f "%Sm" -t "%Y%m%d_%H%M%S" ).${f##*.}" ; done
y un bloque de código de
for f in *.FOO ; do
mv "$f" "$( /usr/bin/stat -f "%Sm" -t "%Y%m%d_%H%M%S" ).${f##*.}"
done
entonces, cuando cambia FOO (por ejemplo, de *.mpg a *.png), los nombres de los archivos de salida son correctos.