Wie kann ich das Datum der letzten Änderung einer Datei festlegen, nachdem ich HandbrakeCLI zum Konvertieren einer Datei verwendet habe?

Führen Sie dies unter OS X Lion aus.

Ich konvertiere mehrere hundert Heimvideos stapelweise mit der Handbrake-CLI. Ich möchte das Datum der letzten Änderung und das Erstellungsdatum auf diese Originaldatei setzen.

Ich verwende das folgende Skript:

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

Ich führe dieses Skript aus, indem ich Folgendes ausführe:

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

Hat jemand Gedanken darüber, wie ich die letzte Änderung und die Erstellungszeit der Originaldatei auf die der $newfile einstellen kann?

Wenn ich nicht herausfinde, wie das geht, wird es mir schwer fallen zu wissen, wann diese Videos tatsächlich erstellt wurden.

Ich freue mich über jede Hilfe oder Hinweise

Antworten (1)

Das Änderungsdatum kann mit eingestellt werden

touch -m -t 201207010742 whatever.m4v

AFAIK das Erstellungs-/Geburtsdatum kann nicht geändert werden.

Um das Änderungsdatum basierend auf dem Erstellungsdatum einer anderen Datei festzulegen, können Sie Folgendes verwenden stat:

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

Um dies auf Ihr Skript anzuwenden, verwenden Sie etwas wie

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