カメラからの転送スクリプト

現在使っているカメラからのファイル転送*1スクリプト。やってることは以下のようなこと(細かい部分は省略)。

  1. /media 以下にマウントされた中から DCIM を含むディレクトリを探す
  2. DCIM 以下のディレクトリをファイル名のプリフィックスとして取得
  3. wのフラグがあがっているファイルをコピー
  4. コピーしたらwのフラグを降ろす*2
  5. コピーしたファイルの拡張子が大文字なら、小文字に変換*3
  6. アンマウントする

DCIM以下のディレクトリ名をプリフィックスとするのは、複数のカメラを使っていてファイル名がだぶるのを回避するため。

#! /bin/sh

c2d() {
        for f in `find ${SRC} -type f -perm 0700`
        do
                fn=`echo ${f} | awk -F/ '{print $NF}'`
                cp -auvp ${f} ${DST}/${PFX}${fn} && chmod -w ${f}
        done
}

DST=${HOME}/Album/00tmp
cd ${DST} || exit

SRC=`find /media -name DCIM`
if [ "x${SRC}" = "x" ]
then
        exit
fi

DSK=`echo ${SRC} | awk -F/ '{printf("/%s/%s",$2,$3)}'`
PFX=`ls ${SRC} | tail -1`
if [  "x${PFX}" != "x" ]
then
        PFX="${PFX}_"
fi
c2d

# 東京通信工業のカメラの動画対応
SRC=${DSK}/MSSONY
if [ -e ${SRC} ]
then
        c2d
fi

chmod 644 *.*
for i in `ls *.[A-Z]*`
do
        o=`echo $i | tr "[A-Z]" "[a-z]" `
        mv $i $o
done

df -h       ${DSK}
sudo umount ${DSK}

exit 0

*1:USB接続、もしくは記録メディアを抜いてマウント

*2:ReadOnlyのファイルは転送済みとみなす

*3:GNU/Linux で Photozouへ転送するときに便利なやうに