Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
#! /bin/sh
#
# copy-by-exif -- EXIFのタイムスタンプ情報を用いてサブディレクトリに整理
# カレントディレクトリに日付名のサブディレクトリを作成し、
# そこにコマンドラインで指定したファイルをコピーする。
# サブディレクトリの名前は「YYYY-MM-DD」形式。
# サブディレクトリ名に使う日付はEXIFのタイムスタンプから取得。
#
# Usage: copy-by-exif [-n] [-v] [file]...
# -n: 実際の変更を行わない
# -v: 実行するコマンドを表示する
#
# Example:
# % copy-by-exif /media/DCIM/100PANA/*.JPG
#
export LC_ALL=C
verbose=NO
#action=NO
action=YES
checkbytes=2048
# オプションを調べる
while [ "$#" -gt 0 ]; do
case x"$1" in
x-n)
action=NO
shift
;;
x-v)
verbose=YES
shift
;;
x-*)
echo "Usage: $0 [-n] [-v] [file]..." 1>&2
exit 1
;;
x*)
break
;;
esac
done
# 実際にコピーを行わないときは実行するコマンドのみを表示
case x"$action" in
xNO)
verbose=YES
;;
esac
case x"$#" in
x0)
echo "$0: no files to copy" 1>&2
echo "Usage: $0 [-n] [-v] [file]..." 1>&2
exit 1
;;
esac
status=0
for pic in "$@" ; do
# ファイルの先頭を調べ、EXIF情報からタイムスタンプを得る
stamp=`head -c $checkbytes $pic | strings | grep -E '[0-9]{4}:[0-9]{2}:[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}' | head -1`
case x"$stamp" in
x)
# タイムスタンプ情報が空の場合はエラー
echo "$0: no EXIF time stamp found in $pic" 1>&2
status=1
;;
x[0-9]*)
# サブディレクトリ名を生成
dname=`echo $stamp | awk '{print $1}' | tr ':' '-'`
if [ ! -d $dname ]; then
# ディレクトリがなければ作る
case x"$verbose" in
xYES)
echo "mkdir -p $dname"
;;
esac
case x"$action" in
xYES)
if ! mkdir -p $dname ; then
echo "$0: can't create $dname for $pic" 1>&2
status=1
fi
;;
esac
fi
case x"$verbose" in
xYES)
echo "cp -p $pic $dname"
;;
esac
case x"$action" in
xYES)
cp -p $pic $dname
;;
esac
;;
esac
done
exit $status
# EOF