多分、車輪の再発明。学生にレポートやプログラムを再提出させたときに前回との違いを調べるために作ったスクリプト。SOURCEに含まれるファイルと同名のTARGETにあるファイルのdiffをとり、同じならば「Same!」違うならばdiffの結果を出す。シェルスクリプトなのでどのUnix環境でも動くと思う。
#/bin/sh
SOURCE=/home/hoge/sourcedir/
TARGET=/home/hoge/targetdir/
if test -d $SOURCE
then
cd $SOURCE
filelist="$SOURCE*"
for filepath in ${filelist}
do
filenameSource=`basename ${filepath}`
filenameTarget=$TARGET$filenameSource
echo "Check $filenameSource"
if test -e $filenameTarget
then
echo "diff source:$filenameSource target:$filenameSource"
difference=`diff $filenameSource $filenameTarget`
if test -z $difference
then
echo " Same!"
else
diff $filenameSource $filenameTarget
fi
echo "====="
else
echo "No file.\n"
fi
done
else
echo "No such file or directory: $SOURCE"
fi使い方は上記をcompare.shと名づけたとき。
% chmod 755 compare.sh % ./compare.sh
本当は引数でディレクトリ名をとったほうが良いのだけど。