#!/bin/bash

diff_args=''
while (( $# > 1 ))
do
  if [[ 'x-r' == "x$1" ]]
  then
    reverse_diff=y
    shift
    continue
  elif [[ "x$1" != "x${1#-}" ]]
  then
    diff_args="$diff_args $1"
    shift
    continue
  else
    break
  fi
done

dest=$1
shift

tot=0
mat=0

find "$@" -type f -print | while read f
do
  if diff -q "$f" "$dest/$f" >/dev/null
  then
    let mat++
  else
    echo -e "\r" >&2
    echo -e "$f"
    #ls -l "$f" "$dest/$f"
    if [[ -n "$diff_args" && -f "$dest/$f" && -f "$f" ]]
    then
      if [[ y = "$reverse_diff" ]]
      then
        diff $diff_args "$f" "$dest/$f"
      else
        diff $diff_args "$dest/$f" "$f"
      fi
    fi
  fi
  let tot++
  printf "\r%4d/%d    " $mat $tot >&2
done
echo >&2

