iPhoneからMacへ取り込んだ写真を日付別フォルダへ振り分ける

広告

iPhoneからファイルを取り込むのに、iPhotoではなくイメージキャプチャを使っています。
さらに言うと、Autoimpoterを使って、繋いだら自動的に決められたフォルダへ自動的に格納されます。

この辺りのやり方は、こちらのサイトを参考にするとわかりやすいです。

こうすることで、以前に取り込んだファイルは取り込まれないため、早く取り込みが終了します。
普段、デジカメでは日付別フォルダを使って管理しています。Autoimpoterのフォルダ設定の中に、「日付」というのがありますが、実はこれは撮影日では無く取り込み日なのです。
よって、撮影日ごとには管理ができません。

Autoimpoter

そこで、日付フォルダごとに管理できないものかと考えてみました。
ググって見ると、近い答えはあるのですが、コレというものが無かったので、Webの情報を元にシェルスクリプトを作りました。

#!/bin/sh

source=/Users/ug/Pictures/Mobile/ugiPhone2/
destination=/Users/ug/Pictures/Mobile/result/ugiPhone2/

find -s ${source} -type f -iname "*.*" -print0 | while IFS= read -r -d $'' line; do

date=`stat -f %Sm -t %Y-%m-%d ${line}`

if [ ! -d ${destination}/${date} ]
then
mkdir ${destination}/${date}
fi

filename=${line##*/}
if [ ! -e ${destination}/${date}/${filename} ]
then
cp ${line} ${destination}/${date}
fi
done


sourceが取り込みフォルダ、destinationが日付別フォルダを作る場所になります。
これをターミナルから実行すると、sourceの中のファイルをdestinationに指定されているフォルダの中へ日付別フォルダを作成してファイルを格納(コピー)します。
コピーとしているのは、移動させるとAutoimporterで毎度全ファイルを読み込んでしまうため、元ファイルを残したまま、destinationに新たにファイルをコピーするようにしています。
移動の方が良い場合は、cp→mvにすれば大丈夫です。
ただし、エラーチェックが皆無なのでご注意を。

1台だけならこれで良いのですが、いろんなデバイスを使っている場合、sourceやdestinationを書き換えるのは面倒なので、私はAutomaterでsourceとdestinationを選択するようにしています。

Automaterの設定はこんな感じ

Automater

3つめのシェルスクリプトの中身はこんな感じ
#!/bin/sh

source=$ {1}
destination=$ {2}

find -s ${source} -type f -iname "*.*" -print0 | while IFS= read -r -d $'' line; do

date=`stat -f %Sm -t %Y-%m-%d ${line}`

if [ ! -d ${destination}/${date} ]
then
mkdir ${destination}/${date}
fi

filename=${line##*/}
if [ ! -e ${destination}/${date}/${filename} ]
then
cp ${line} ${destination}/${date}
fi
done

※sourceとdestinationの$と{の間のスペースは要りません。ここでは、うまく表示されないので便宜上スペースを入れています。

デジカメは取り込みアプリが日付ごとにしてくれていたので、iPhoneでも同様に分けられるようになって便利になりました。

Lightroomを使うとフォルダ分けをしないでも管理が楽になるので、Lightroomを導入するのも良いと思います。
私はLightroomも使いますが、Finderを使ってNAS上でファイルを探すこともするため日付別・カメラ別に分かれてる方がありがたいので、このように管理するようにしています。