ディレクトリの各ファイルの差分を調べるスクリプト

多分、車輪の再発明。学生にレポートやプログラムを再提出させたときに前回との違いを調べるために作ったスクリプト。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

本当は引数でディレクトリ名をとったほうが良いのだけど。