#!/bin/sh # # paulius@devnull.lt # duplicate file checker, needs one argument - directory in which we want # to look for duplicates... [ $# -ne 1 ] && exit 1 OS=`uname -s` case $OS in FreeBSD) MD5='md5 -r' ;; Linux) MD5=md5sum ;; *) echo "Your OS is not supported, check the source ;)" exit 1 esac MD5FILE=/tmp/md5.list.txt MD5FILE_S=/tmp/md5_s.list.txt MD5FILE_U=/tmp/md5_u.list.txt find $1 -type f -exec $MD5 {} \; > $MD5FILE sort $MD5FILE | cut -d ' ' -f1 > $MD5FILE_S uniq $MD5FILE_S | cut -d ' ' -f1 > $MD5FILE_U FILELIST=`diff $MD5FILE_S $MD5FILE_U | grep '^<' | cut -d ' ' -f2` for m in $FILELIST; do grep $m $MD5FILE | awk '{ print $2; }' echo " " done [ -f $MD5FILE ] && rm $MD5FILE [ -f $MD5FILE_S ] && rm $MD5FILE_S [ -f $MD5FILE_U ] && rm $MD5FILE_U