画像解析を行っている人ならば、一度は画像の振り分け作業に悩まされたことがあると思います。
私ももれなくその一人で、最近、あるプロジェクトにおいて、画像を分けなければならずしばらく放置していました。
しかし、よく考えてみたら、こういう「めんどくさい」けれども「単純な作業」こそ、コンピューターにさせるべき作業なわけです。
そこで、以下のようなスクリプトを考えてみました。コメントで何をしているか説明します。
#!/bin/sh
#filesorter.sh
#sort files according to the sorting list
#Usage: filesorter.sh sorting_list
#You need to prepare a sorting list beforehand.
#It should be like the following.
# img001 HC
# img002 PT
# img003 HC
# img004 PT
# img005 PT
#引数が指定されているかチェック
if [ $# -ne 1 ]; then
echo "A sorting file should be specified!"
echo "Usage: $0 sorting_file"
echo "Sorting file includes ID and Categorized Group"
echo "example:"
echo "img001 HC"
echo "img002 PT"
echo "img003 HC"
echo "img004 PT"
echo "img005 PT"
exit 1
fi
#ファイルを読み込み、空白行を削除し、1行ずつ$lineにセット
cat $1 | sed '/^$/d' | while read line
do
#AWKを使って、第1フィールドを変数idにセット
#第2フィールドを変数categoryにセット
id=`echo $line | awk '{ print $1 }'`
category=`echo $line | awk '{ print $2 }'`
#変数categoryの名前に相当するディレクトリがなければ作成
if [ ! -e $category ]; then
mkdir $category
fi
#変数idを含むファイルを先ほど作成したディレクトリにコピー
echo "copy $id to $category"
cp *${id}* $category
done
興味のある方は、こちらからダウンロードしてください。