#!sh # HPUX_ID: @(#)27.3 85/06/27 # @(#)dircmp.sh 27.3 85/05/20 # # Some modifications to PATH allow greater flexibility for the IPC #PATH=/bin:/usr/bin - OLD STUFF # # TMPDIR=/usr/tmp # changing to /tmp will increase speed at a memory cost USAGE="dircmp: usage: dircmp -s -d -wn directory directory" trap "rm -f $TMPDIR/dc$$*;exit" 1 2 3 15 width=72 set -- `getopt dsw: $*` if [ $? != 0 ] then echo $USAGE exit 2 fi for i in $* do case $i in -d) Dflag="yes"; shift;; -s) Sflag="yes"; shift;; -w) width=`expr $2 + 0 2>/dev/null` if [ $? = 2 ] then echo "dircmp: numeric argument required" exit 2 fi shift 2 ;; --) shift; break;; -*) echo unknown option exit 3 ;; esac done D0=`pwd` D1=$1 D2=$2 if [ $# -lt 2 ] then echo $USAGE exit 1 elif [ ! -d "$D1" ] then echo $D1 not a directory ! exit 2 elif [ ! -d "$D2" ] then echo $D2 not a directory ! exit 2 fi cd $D1 find . -print | sort > $TMPDIR/dc$$a cd $D0 cd $D2 find . -print | sort > $TMPDIR/dc$$b comm $TMPDIR/dc$$a $TMPDIR/dc$$b | sed -n \ -e "/^ /w $TMPDIR/dc$$c" \ -e "/^ [^ ]/w $TMPDIR/dc$$d" \ -e "/^[^ ]/w $TMPDIR/dc$$e" rm -f $TMPDIR/dc$$a $TMPDIR/dc$$b pr -w${width} -h "$D1 only and $D2 only" -m $TMPDIR/dc$$e $TMPDIR/dc$$d rm -f $TMPDIR/dc$$e $TMPDIR/dc$$d sed -e s/..// < $TMPDIR/dc$$c > $TMPDIR/dc$$f rm -f $TMPDIR/dc$$c cd $D0 > $TMPDIR/dc$$g while read a do if [ -d $D1/"$a" ] then if [ "$Sflag" != "yes" ] then echo "directory $a" fi elif [ -f $D1/"$a" ] then cmp -s $D1/"$a" $D2/"$a" if [ $? = 0 ] then if [ "$Sflag" != "yes" ] then echo "same $a" fi else echo "different $a" if [ "$Dflag" = "yes" ] then diff $D1/"$a" $D2/"$a" | pr -h "diff of $a in $D1 and $D2" >> $TMPDIR/dc$$g fi fi elif [ "$Sflag" != "yes" ] then echo "special $a" fi done < $TMPDIR/dc$$f | pr -r -h "Comparison of $D1 $D2" if [ "$Dflag" = "yes" ] then cat $TMPDIR/dc$$g fi rm -f $TMPDIR/dc$$*