¿Cómo cambiar el nombre de archivos por lotes en Mac OS X?

¿Cómo cambiar el nombre de archivos por lotes en Mac OS X?

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.

información relacionada