fdupes BTW: schnelleres Shell-Skript

Georg Gottleuber gottleuber at uni-bielefeld.de
Sun Dec 3 23:45:47 CET 2017


Hi,

weil ich so eine Funktionalität auch schon brauchte bevor ich von der
Existenz von fdupes wusste, hab ich mir ein Shellskript geschrieben.

Neulich ließ ich beide Programme über ein Verzeichnis laufen und war
erstaunt, dass meine Shell-Version schneller ist :-) (und es lag nicht
am Filesystem-Cache)

### aus meiner .bashrc ##############################################

# doppelte Dateien finden (md5sum)
# funktioniert wie folgender Befehl nur viel schneller:
# find . -type f -exec md5sum {} \; |sort|uniq -D --check-chars=32
finddoubles()
{
	if [ "$1" == "--help"  -o "$1" == "-h" ]
	then
		echo 'Usage: finddoubles DIR SIZE[ckMG]'
		echo 'find duplicate files (faster than fdupes).'
	else
		# kein Verz. angegeben -> nutze aktuelles
		if [ -z "$1" -a -z "$2" ]
		then
			dir="."
		else
			if [ -d "$1" ]
			then
				dir="$1"
			else
			echo "Verzeichnis $1 existiert nicht" 1>&2
			fi

		fi
		# size arg is given
		size=''
		if [ ! -z "$2" ]
		then
			size="-size +$2"
		fi

	# suche alle Dateien groesser als $size
	# sortiere nach Dateigroesse
	# waehle Dateien aus, die genauso gross sind wie min. eine andere Datei
	# mdsum alle Dateien
	# sortiere und geben die Dateien mit gleichen Summen aus.
		find "$dir" -type f $size -printf "%16s %p\n" |sort |\
uniq -D --check-chars=16 |sed 's/^ *[0-9][0-9]* //g' |\
while read i; do md5sum "$i"; done | sort |\
uniq --all-repeated=separate --check-chars=32 | awk '
		BEGIN {count=1;} {if ($1 == ""){count+=1;print $1;}else {$1="";
print count,$0;}}'

	fi
}

###############################################################

Vorteil: Man kann auch erst ab einer bestimmten Dateigröße suchen,
leicht zu Modifizieren, schnell

Nachteil: Hardlinks werden nicht erkannt


Viel Spaß beim Benutzen (gerne auch Feedback),
Georg



-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: OpenPGP digital signature
URL: <http://lug-owl.de/pipermail/linux/attachments/20171203/1f8d88be/attachment.sig>


More information about the Linux mailing list