写真ファイルの撮影日と作成日・変更日が異なる場合の、TerminalとEXIFを使った修正法

Automatorでリネームする 写真・画像

こんにちは、くみです。
Terminal(+ExifTool)とAutomatorを使って、撮影日とファイル作成日・変更日が異なる写真を色々修正しました。

Automatorを使ってファイルの更新日をファイル名に追加する

まず核となる『ファイルの更新日をファイル名に追加する』方法を最初にまとめます。(自分がいつもここを見返したいので)

Automatorの設定は以下の通り。

  1. 『Rename Finder Items: Add Date or Time』アクションを選択
  2. 次の項目を選択(Separatorなどはお好みで)
    • Date/Time: Modifined (更新日)
    • Format: YMD(年-月-日でソートしやすく)
    • Where: Before name(ファイル名の前につけることでソートしやすく)
    • Separator 1: Dash + Use Leading Zeros(年月日を-で区切る)
    • Separator 2: Underscore(年月日とファイル名を_で区切る)
  3. 対象ファイルを選択するために『Get Specified Finder Items』アクションを『Rename Finder Items: Add Date or Time』の前に追加(ファイルをドラッグ&ドロップするとアクションが後ろに追加されるので、手動で前に持ってきてもよし)
    AutomatorのWorkflow: 更新日をファイル名に追加する
    AutomatorのWorkflow: 更新日をファイル名に追加する

    これを実行すると、例えば2022年11月21日に更新された『IMG_0001.HEIC』のファイル名が『2022-11-21_IMG_0001.HEIC』になります。

    写真の撮影日・変更日がカオスだったので修正したい!

    ファイルの更新日がそのまま写真の撮影日だったら前項で終了していたんですが、私の写真フォルダ(特に2007〜2009年)がカオスでそうではなかったため、更新日を写真撮影日と揃えるために以下の作業が必要になりました。
    当てはまる人だけ読んでもらえればと思います。

    • まず撮影日とファイルの作成日・変更日が合っていません。おそらくHDDにコピーしたりしている中でおかしくなってしまったのではと思うのですが…
    • また、私はファイル名に日付を入れているのですが、それもファイルの変更日からとっていているのでEXIFの撮影日に合っていません。
    • そして2007〜2009年はガラケー・デジカメ・iPhoneと写真撮影デバイスが入り乱れているので、EXIFがついていたりいなかったり。
    • なんだかよく分からないけど写真も異なる名前で重複していて(おそらく吸いだす過程が異なったので同じ写真で名前違いが出来てしまったのでは)、結局同じ写真が3〜4枚ありました。

    最後のは『ファイルサイズで並べ替えて(同一写真ならファイルサイズは同じなので)目視で削除』という不毛な作業で解消しましたが、上3つについてどう整理したかを自分メモとして残しておきます。

    前回は結論として『MacのリネームアプリShupapanを使ってEXIF情報の撮影日時をファイル名に追加する』というところに落ち着いたのですが、Shupapanが私の環境ではなぜかエラーが頻発して作業できないファイルが大量にあるので、やはり変更日をいじる方法を探す事にしました。

    404 NOT FOUND | Kumi-Log
    2014年1月から海外放浪(デジタルノマド)してます

    全体の流れ

    全体の流れはこんな感じです。

    1. まず更新日付をすぐ分かるような日時に変更する
    2. 更新日付を撮影日付に変更する
    3. Automatorでファイル名を適宜修正(元々ついていた日付を削除する)
    4. 撮影日とファイル名の日付が違っていたファイルをリネーム

    1.まず更新日付をすぐ分かるような日時に変更する

    偽の作成・更新日付がついているファイルがたくさんあり、EXIFの撮影日に沿ったファイルと後で見分けるため、一律に更新日付を変更。

    touch -t 200901010000 [ファイル名]

    これでファイルの更新日付が2009年01月01日00時00分になります。

    うーん、Mac使うならやっぱりUNIXのコマンドは一度勉強し直した方がいいんだろうなあ…。20代の時にちゃんとやっておけばよかったんですけど、変にMacユーザ(漢字TalkとかOS8とかの時代)だったのでUNIXの実行環境が手に入れられなかったんですよね…(´・ω・`)、

    2.更新日付を撮影日付に変更する

    全部同じ更新日付になったところで、TerminalとExifToolを使ってEXIFの撮影日を元に更新日を書き換え。(EXIF情報がない写真は2009年01月01日のまま)

    ■ 更新日付を撮影日付に変更 exiftool "-DateTimeOriginal>FileModifyDate" hoge.jpg → 指定のファイルを変更
    exiftool "-DateTimeOriginal>FileModifyDate" hoge\*.jpg → ワイルドカード利用可能
    exiftool.exeの利用方法:自分用まとめ 仁義偉王のブログ/ウェブリブログ

    ワイルドカード使えるんだ!素敵!と思って試したんですけど、なぜか漏れがあるようなので(指定の方法が間違っていた?それとも処理スピードの問題??原因はよく分かりません)、ファイルを全部選択して突っ込むという方法に落ち着きました。

    こういった機能を持たせたアプリケーションもあるようなのですが、MacのリネームソフトShupapanにもついていたはずなのに私の環境では上手く動かなかったので、もっと原始的(?)な方法がいいなと思って。

    3.Automatorでファイル名を適宜修正(元々ついていた日付を削除する)

    さて、次は撮影日を元にファイル名に日付を追加したいのですが、元々つけていたものが残っていると

    20090326_20070716_img370.jpg

    のようなカオスな状態になりますので、撮影日とファイル名の日付が異なっているファイルから日付を表す数字を取る。

    変更日が狂っていたファイルは大体日付が固まっていたので(おそらくHDDにコピーしたりして狂った日付なんだと思います)、Automatorの置換(Rename Finder Items: Replace Text)で取りました。

    Automatorでリネームする

    Terminalでも取れるんだろうけど、まだそこまで使いこなせていない…(´・ω・`)、

    ▼Automatorのリネームについてちょっと書いてます。

    404 NOT FOUND | Kumi-Log
    2014年1月から海外放浪(デジタルノマド)してます

    これで、

    • 撮影日=作成日・修正日だった写真
    • 撮影日≠作成日・修正日だった写真
    • 撮影日が残っていない(EXIF情報がない)写真

    の三種類だったものを

    • 撮影日=作成日・修正日の写真
    • 撮影日が残っていない(EXIF情報がない)写真

    の2種類に出来た上、名前もきれいにする事が出来ました。ふう。

    ここで最初の項目に戻れば、撮影日をファイルの名前の先頭に付与していくことができます。

    同じことに悩んでない人にはちょっと分かりにくいかもしれないですが…(´・ω・`)
    きっとこの情報が必要な誰かがGoogleを使って辿り着くであろうことを願って…

    タイトルとURLをコピーしました