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