MacでExif情報からファイル名を変換する


こんにちは。
一眼レフやミラーレスを複数台使って撮影とかしていると、ファイル名順≠時間順とならないことがあると思います。

こんな感じで。
ファイル名が時間順のほうがいろいろと便利なので、簡単に変換できるワンライナーをいつも動かしてるのでご紹介します。

ファイル名の先頭に時間をつける

該当のフォルダまでcdし、

commandline
 bash $ for i in `ls -1 DSC_*.JPG` ; do ¥
S=`sips -g all $i | grep "creation" | perl -pe 's/^.*\:\s+(20\d\d):(\d\d):(\d\d)\s+(\d\d):(\d\d):(\d\d).*$/img$1_$2_$3_$4_$5_$6_/'` ; ¥
mv $i $S$i ; ¥
done

ただsipsというExif情報を見られるコマンドからcreationを抽出し変換してるだけです。
日付時間の前にimgをつけてるのはなんとなくです。
いきなりmvしてしまうと不安という方は、まずecho "mv $i $S$i"ってやってみたほうがいいとおもいます(自分もだいたいそうですw)

おまけ

「DSC_0123.jpg」みたいなそもそものファイル名がかぶる場合は、きっとカメラ側にprefix(先頭につく文字)を変更する設定があるはずなのでそちらで先に調整してしまったほうが早いです。

もしくはいったん別々のフォルダに入れて上記のコマンドを動かし、あとでまとめるでもいいでしょう。秒までかぶってるとファイル名が衝突してしまいますが、一人で複数台持ち前提ならほぼないでしょう。