HandbrakeCLIを使用してファイルを変換した後、ファイルの最終変更日を設定するにはどうすればよいですか?


1

OS X Lionでこれを実行します。

Handbrake CLIを使用して、数百のホームムービーをバッチ変換しています。最終変更日と作成日を元のファイル設定したいと思います。

次のスクリプトを使用しています。

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

次を実行してこのスクリプトを実行します。

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

元のファイルの最終変更時刻と作成時刻を$ newfileの時刻に設定する方法について考えている人はいますか?

これを行う方法がわからない場合、これらのビデオが実際に作成された時期を知るのに苦労します。

私は助けやポインタに感謝します

回答:


2

変更日は次のように設定できます

touch -m -t 201207010742 whatever.m4v

私の知る限り、作成/生年月日は変更できません。

別のファイルの作成日に基づいて変更日を設定するには、次を使用できますstat

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

これをスクリプトに適用するには、次のようなものを使用します

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

おかげで、元のファイルの日付を取得して変数に保存し、それをタッチコマンドに渡す方法を提案できる可能性はありますか?
Kappy26

感謝しますが、(書かれているように)これがうまくいくとは思いません。最初にファイルを統計し、次に変換してからファイルをタッチする必要があります。私はUNIXスクリプトの作成が苦手なので、これを変更する方法をいじっています。
Kappy26
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.