Mam wiele duplikatów plików obrazów na moim komputerze z systemem Windows, w różnych podfolderach i z różnymi nazwami plików.
Jaki skrypt Pythona lub darmowy program zaleca się do usuwania duplikatów?
(Przeczytałem to podobne pytanie, ale na plakacie pyta się o wizualne duplikaty o różnych rozmiarach plików. Moje są dokładnymi duplikatami o różnych nazwach plików.)
windows
python
deduplication
image-processing
BioGeek
źródło
źródło
Odpowiedzi:
Nie polegaj na sumach MD5.
Sumy MD5 nie są niezawodnym sposobem sprawdzania duplikatów, są jedynie sposobem sprawdzenia różnic.
Użyj MD5 do znalezienia możliwy kandydat duplikaty, a następnie dla każdej pary współdzielącej MD5
Widząc, że jestem podchwycony przez ludzi, którzy naiwnie podchodzą do składania duplikatów Tożsamości, Jeśli chcesz polegać całkowicie na algorytmie mieszania, na litość boską, używaj czegoś trudniejszego, jak SHA256 lub SHA512, przynajmniej zmniejszysz prawdopodobieństwo do rozsądnego stopnia, sprawdzając więcej bitów. MD5 jest wyjątkowo słaba dla warunków kolizji.
Radzę również, aby ludzie czytali tutaj listy dyskusyjne zatytułowane „sprawdzanie plików”: http://london.pm.org/pipermail/london.pm/Week-of-Mon-20080714/thread.html
Jeśli powiesz „MD5 może jednoznacznie zidentyfikować wszystkie pliki jednoznacznie”, to masz błąd logiczny.
Biorąc pod uwagę zakres wartości o różnej długości od 40 000 bajtów długości do 100 000 000 000 bajtów długości, całkowita liczba kombinacji dostępnych dla tego zakresu bardzo przekracza możliwą liczbę wartości reprezentowanych przez MD5, ważącą zaledwie 128 bitów długości.
Reprezentują 2 ^ 100 000 000 000 kombinacji z tylko 2 ^ 128 kombinacjami? Nie wydaje mi się to prawdopodobne.
Najmniej naiwny sposób
Najmniej naiwny sposób i najszybszy sposób wyeliminowania duplikatów jest następujący.
Fdupes robi to. Powinieneś używać oprogramowania, które używa tych samych kryteriów.
źródło
Jest to jeden liner na systemach uniksowych, takich jak systemy Linux lub Windows z zainstalowanym Cygwinem:
md5sum (który jest o około 50% szybszy) może zostać użyty, jeśli wiesz, że nie ma celowo utworzonych kolizji (masz większą szansę na wygranie 10 dużych loterii niż szansa na znalezienie jednej naturalnie występującej kolizji md5)
Jeśli chcesz zobaczyć wszystkie dupsy, które masz zamiast ich usunąć, zmień
unlink $file
część doprint $file, "\n"
.źródło
Użyłem
fdupes
(napisane w C) ifreedups
(Perl) na systemach uniksowych i mogą działać również w systemie Windows; istnieje również podobne które mają działać w systemie Windows:dupmerge
,liten
(napisane w Pythonie) itp.źródło
Aby usunąć duplikaty obrazów w systemie Windows, spójrz na DupliFinder. Może porównywać obrazy według różnych kryteriów, takich jak nazwa, rozmiar i rzeczywiste informacje o obrazie.
Aby uzyskać inne narzędzia do usuwania duplikatów plików, spójrz na ten Lifehacker artykuł.
źródło
Zamiast DupliFindera spróbuj zamiast tego rozwidlić projekt, Sobowtór . Naprawiliśmy mnóstwo błędów w oryginalnym projekcie, dodaliśmy szereg nowych funkcji i znacznie poprawiliśmy wydajność.
źródło
Jedną z opcji może być Dupkiller .
źródło