Skocz do zawartości

Wyszukiwanie Duplikatów Plików


borzole

Rekomendowane odpowiedzi

Jak się sprawdza czy dwa pliki dowolnego formatu są takie same? Niby jest program FSlint, ale potrzebuję coś sobie zautomatyzować w skrypcie.

Pierwszy pomysł to wygenerowanie sum kontrolnych plików przy pomocy md5sum, ale sprawdzając ~400MB danych (6000 plików) czekam chyba ze 20 sekund. Mam do sprawdzenie kilka GB i jakoś mi się nie widzi tą metodą. Są jakieś szybkie algorytmy do tego?

 

Skleciłem sobie taki kulawy skrypt, ale w między czasie chyba coś w nim sknociłem :ph34r:

duplicate-md5

#!/bin/bash

# duplicate-md5  -- wyświetla duplikaty plików na podstawie sum kontrolnych
# użycie:
# duplicate-md5 folder1 folder2
# lub bez parametrów dla bierzącego katalogu

# baza
LOG=/tmp/${0##*/}-$(date +%N).log

# zbieranie sum kontrolnych plików
_core(){
   dir=${1:-.}
   echo -e "CURRENT JOB: $dir"
   find ${dir} -type f -exec \
       md5sum '{}' >> $LOG    \;
   echo -e "JOB IS FINISHED"
   }

if [ $# == 0 ] ; then
   _core
else
   for p in $@ ; do
       _core ${p}
   done
fi

# spr. czy są duplikaty
A=$(cat $LOG | wc -l)
B=$(cat $LOG | cut -d' ' -f1 | sort -u |wc -l)

if [ $A != $B ]; then

   D=$(cat $LOG | cut -d' ' -f1 | uniq -d )
   ILD=$(echo $D | wc -w)
   echo -e " Na $A plików masz $ILD duplikatów \n -----------------------------------------------"    

   for i in $D ; do
       echo -e "SUMA = $i "        
       grep $i $LOG | cut -d' ' -f2-
   done

else
   echo " brak duplikatów "
fi

rm $LOG

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
×
×
  • Dodaj nową pozycję...