#!/bin/sh # # Local version: 0.5 # Copyright (c) 2008 Peter Kuyarov, All rights reserved [some of it] # Thu Feb 21 08:20:55 MST 2008 - basics, more "options" coming soon # # script to recursively check for duplicate files in current directory # # scripts@pknet.net # http://peterk.org/scripts/ # PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/games:/usr/local/sbin:/usr/local/bin:/usr/X11R6/bin:/usr/local/vpopmail/bin:/root/bin export PATH # user configurable variables # files cksumraw=/tmp/cksumraw echo -n > $cksumraw cksumsorted=/tmp/cksumsorted echo -n > $cksumsorted cksumresults=/tmp/cksumresults echo -n > $cksumresults #init start of list startlist=0 #start cksumming directory for all files #sort list, then check if cksum is a duplicate in list #cksum $(find ./ -type f -print)|sort -k 1,1n | find ./ | while read file ; do cksum "$file" >> $cksumraw;done sort $cksumraw > $cksumsorted # now go through sorted list to check for dups cat $cksumsorted | \ while read c1 c2 n3 do # if first file, make it same as previous if [ $startlist -eq 0 ] then startlist=1 prevchksum=$c1 prevfile=$n3 continue fi # if current checksum equals saved checksum, # the file is a duplicate if [ $prevchksum -eq $c1 ] then printf "file $prevfile \n has duplicate $n3 \n" >> $cksumresults printf "file $prevfile \n has duplicate $n3 \n" else prevchksum=$c1 prevfile=$n3 fi done rm $cksumraw rm $cksumsorted echo Output list of duplicates saved in $cksumresults