23.7. Wyszukiwanie plików zdublowanych

Problem

Chcemy znaleźć duplikaty plików, które niepotrzebnie zajmują miejsce na dysku.

Rozwiązanie

Najprostszym rozwiązaniem jest pogrupowanie plików według ich nazwy, a następnie według sumy kontrolnej MD5. Dwa pliki uznaje się za identyczne, jeśli mają taki sam rozmiar i identyczną sumę kontrolną MD5.

Poniższy program pobiera listę katalogów z wiersza polecenia i wyświetla wszystkie zbiory duplikatów. Aby zmodyfikować działanie metody each_set_of_duplicates, można przekazać do niej blok kodu; na przykład w celu wyświetlenia pytania do użytkownika o to, które pliki zachować, a które usunąć.

#!/usr/bin/ruby # find_duplicates.rb require 'find' require 'digest/md5' def each_set_of_duplicates(*paths) ...

Get Ruby. Receptury now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.