Nachdem eine Kollegin bei mir auf Arbeit plötzlich ausschied, bat mich mein Chef um eine schnelle Lösung zur Auflistung (und ein paar mehr Infos) zu all ihren Bilddateien auf ihrem Windowsrechner.
Der hatte 3 Festplatten und eine externe mit insgesamt knapp 5tb. Schon bei der ersten Analyse fanden sich schnell Duplikate.
Deswegen hier wieder ein fein gebasteltes Script, was die Arbeit enorm erleichterte... (LINUX BASH/SH)
#!/bin/bash
#set -xo
SEARCH="${1}"
COUNT=0
SUM=0
clear
echo -e "Arbeite\n"
for EXTENSION in jpg jpeg jpe psd bmp png tif tiff
do
> hash."${EXTENSION}".log
find "${SEARCH}" -size +10k -iname "*.${EXTENSION}" -exec md5sum -b {} >> hash."${EXTENSION}".log \;
COUNT=$(wc -l < hash."${EXTENSION}".log)
HASH=$(cat hash."${EXTENSION}".log | awk '{ print $1 }')
for DUPLICATE in ${HASH}
do
DUPCOUNT=$(grep ${DUPLICATE} hash.${EXTENSION}.log | wc -l)
if [ ${DUPCOUNT} -gt 1 ]; then
if [ ! -d ${EXTENSION}-dup ]; then
mkdir ${EXTENSION}-dup
fi
if [ ! -f ${EXTENSION}-dup/"${DUPCOUNT}x-${DUPLICATE}-${EXTENSION}".duplicate.log ]; then
grep ${DUPLICATE} hash.${EXTENSION}.log >> ${EXTENSION}-dup/"${DUPCOUNT}x-${DUPLICATE}-${EXTENSION}".duplicate.log
fi
fi
done
if [ ${COUNT} -gt 0 ]; then
let WATCH=$(ls -l ${EXTENSION}-dup/ | wc -l)-1
for ADD in $(ls -l ${EXTENSION}-dup/ | awk '{ print $9 }' | awk -F x '{ print $1}')
do
let SUM=$SUM+$ADD
done
let SUM=$SUM-$WATCH
echo "Es gibt ${COUNT} ${EXTENSION} Bilder"
echo "Die Dateiendung .${EXTENSION} hat ${WATCH} Bild(er) mit Duplikaten"
echo -e "Insgesamt gibt es $SUM Duplikat(e) von Bildern\n"
SUM=0
COUNT=0
fi
done exit 0
Alles anzeigen
Ergebnis könnte dann so aussehen
Arbeite
Es gibt 16963 jpg Bilder
Die Dateiendung .jpg hat 937 Bild(er) mit Dublikaten
Insgesamt gibt es 1204 Dublikat(e) von Bildern
Es gibt 3 tif Bilder
Die Dateiendung .tif hat 1 Bild(er) mit Dublikaten
Insgesamt gibt es 1 Dublikat(e) von Bildern
Syntax ist denkbar einfach
find_pictures.bash /path/to/pictures