ファイルシステムのタイムスタンプでExifの撮影日時を設定する

最近ふと古い写真を漁っていると、Exifの無いファイルが沢山出てきます。初代W-ZERO3なんかで撮った写真がそうです。幸いタイムスタンプ(最終更新日、mtime)は残っているのでこいつをExifに書き込んでしまいたい。というのも、タイムスタンプなんていつ何時変更されるか分からないからだ。
ちょっと調べたらUnixでEXxifを弄るのにはjheadというコマンドを使えば良いらしい。manualを読むとバッチリやりたかったことが書かれていた。

-ft Exifの情報を元にファイルシステムのタイムスタンプをセットする
-dsft Exifのタイムスタンプをファイルシステムのタイムスタンプにセットする
※拙訳

というワケでサクッと

$ jhead -dsft -ft *

とやってやると丸く収まる。最後に”-ft”を付けないとファイルシステムのタイムスタンプがコマンドを実行した日の日付になってしまうので注意。
もしもExifが全く無いファイルの場合は”-mkexif”を付けてやる必要がある。

$ jhead -mkexif -dsft -ft *

このオプションを付けるとExifが存在する場合全て初期化されてしまうので注意が必要である。中にはExifはある(機種名とか絞り値とかは書いてある)が撮影日時だけは無いとかいう意味不明なファイルもある(IS02やISW12HTがそうだった)。
余談だが、ISW11HTはExifに撮影日時が書かれているのにISW12HTは書かれていない(Exif自体はある)。退化してどうする!

WordPress Themes