写真を撮る枚数が増加し、1つのフォルダに写真を収めて整理するのが難しくなってきた。 またカメラは自動でDSCF[0-9]{4}.JPGという番号を付けるが、このファイル名は容易に重複しうるので使えない。 そこで、%Y-%m-%d_%H-%M-%S.jpg というファイル名にした上で、%y/%m のフォルダに収めることで いつ撮った写真なのかわかりやすくしたい。
SDカードからHDDに、EXIFの撮影日時が既存より新しいファイルのみコピーする。 (ファイル作成日時は変更される可能性があるので信用しない。)
exiftoolにこんな使い方があったとは意外だ。
source="Path to SD"
dest="Path to HDD"
cd $dest
# すでに%y/%mのフォルダ構造になっている前提
# 一番新しいファイルをファイル名から探す
cd $(ls -d -r --indicator-style=none */|head -n 1)
cd $(ls -d -r --indicator-style=none */|head -n 1)
newest_date=$(ls -r -v --indicator-style=none|head -n 1|xargs exiftool -d '%Y:%m:%d' -CreateDate -S -s)
cd $source
exiftool -o . -directory=$dest -ext JPG -if "\$CreateDate gt '$newest_date'" ./
ファイル名を日付にリネームする。これもexiftoolでできる。
cd $dest
exiftool '-filename<CreateDate' -d %Y-%m-%d_%H-%M-%S%%-c.%%le -r -ext JPG $dest
撮影年月に応じたフォルダに入れる。これもexiftoolでいける!
exiftool '-Directory<CreateDate' -d ./%y/%m -r ./
全てexiftoolで可能なのは意外だった。ちゃんと ドキュメント に目を通して良かった。