¿Cómo puedo establecer la última fecha de modificación del archivo después de usar HandbrakeCLI para convertir un archivo?

Ejecutando esto en OS X Lion.

Estoy convirtiendo por lotes varios cientos de películas caseras usando Handbrake CLI. Me gustaría establecer la última fecha de modificación y la fecha de creación de ese archivo original.

Estoy usando el siguiente script:

for f in "$@"; do
  base=${f%.*}
  extension=${f##*.}
  newfile=${base}.m4v
  echo Converting \"$f\" to \"$newfile\"
  /Applications/HandBrakeCLI  -e x264 -b 4000 -a 1 -E faac -B 160 -R 48 -6 dpl2 -f mp4 --crop 0:0:0:0  -x level=40:ref=2:mixed-refs:bframes=3:weightb:subme=9:direct=auto:b-pyramid:me=umh:analyse=all:no-fast-pskip:filter=-2,-1 -i "$f" -o "$newfile"    
done

Ejecuto este script ejecutando:

find . -name "*.avi" -print0 | xargs -0 hbapple.sh

¿Alguien tiene alguna idea sobre cómo puedo establecer la última modificación y la hora de creación del archivo original en la del $nuevoarchivo?

Si no descubro cómo hacer esto, tendré dificultades para saber cuándo se crearon realmente estos videos.

agradezco cualquier ayuda o sugerencia

Respuestas (1)

La fecha de modificación se puede establecer con

touch -m -t 201207010742 whatever.m4v

AFAIK, la fecha de creación/nacimiento no se puede modificar.

Para establecer la fecha de modificación en función de la fecha de creación de otro archivo, puede utilizar stat:

touch -m -t $(stat -f %SB -t %Y%m%d%H%M original-file.mov) new-file-m4v

Para aplicar esto a su script, use algo como

for f in "$@"
  do
     olddate=$(stat -f %SB -t %Y%m%d%H%M "$f")
     base=${f%.*}
     extension=${f##*.}
     newfile=${base}.m4v
     echo Converting \"$f\" to \"$newfile\"
     /Applications/HandBrakeCLI  -e x264 -b 4000 -a 1 -E faac -B 160 -R 48 -6 dpl2 -f mp4 --crop 0:0:0:0  -x level=40:ref=2:mixed-refs:bframes=3:weightb:subme=9:direct=auto:b-pyramid:me=umh:analyse=all:no-fast-pskip:filter=-2,-1 -i "$f" -o "$newfile"
     touch -m -t $olddate "$newfile"    
  done