画像に含まれる Exif 情報を使って写真を日付ごとのディレクトリにわけるシェルスクリプト

プログラム,写真シェルスクリプト

画像に含まれる Exif 情報を使って
写真を日付ごとのディレクトリに
わけるシェルスクリプト

デジカメで写真を撮ると、画像に Exif(Exchangeable image file format; イグジフ)情報と言われる撮影メタ情報が付加されます。その Exif 情報を使って写真データを日付ごとのディレクトリに仕分けるスクリプトを紹介します。

Exiftool というパッケージを利用しています。Debian 系統の Ubuntu などであれば apt install でインストールできるはずです。macOS でも HomeBrew でインストールできると思います。

シェルスクリプトでファイル操作します。

#!/bin/sh
# Exif 情報に含まれる日付時刻別にディレクトリにファイルを分けるスクリプト
# 引数 : "./src/*.jpg" などの移動したいファイルのパス

for files in $(find $@ -type f)
do
    createdate=`exiftool -n -b -DateTimeOriginal $files`

    date=`echo $createdate | tr ':' '-' | awk '{print $1}'`
    time=`echo $createdate | tr ':' '-' | awk '{print $2}'`

    # 日付のディレクトリが存在しなければ作成
    if [ ! -d ${date}]; then
        mkdir ${date}
    fi

    mv $files ${date}/${date}_${time}_$(basename $files)
done

これはシェルスクリプトですが、今どきは WSL を使えば Windows 上でもネイティブな感じでシェル環境が動くのでいい時代になったなあ、と思います。

参考資料 : Ubuntu Weekly Recipe 第553回「Ubuntuで写真のメタデータを扱う方法」 – gihyo.jp


また将来的に配布することを想定して、Windows の GUI 上で動くソフトウェアも作ろうとしています。CUI だけだと扱えない人もいると思うので。またできたら紹介します。