На моем компьютере с Windows, в разных подпапках и с разными именами файлов много дублированных файлов изображений.
Какой скрипт на Python или бесплатную программу вы бы порекомендовали для удаления дубликатов?
(Я читал этот похожий вопрос, но постер там спрашивает о визуальных дубликатах с разными размерами файлов. Мои точные дубликаты с разными именами файлов.)
Ответы:
Не полагайтесь на суммы MD5.
Суммы MD5 не являются надежным способом проверки на наличие дубликатов, они являются лишь способом проверки на наличие различий.
Используйте MD5 для поиска возможных дубликатов кандидатов , а затем для каждой пары, разделяющей MD5
Видя, что меня обижают люди, делающие наивные подходы к дублированию идентификатора файла, если вы собираетесь полностью полагаться на алгоритм хеширования, ради бога, используйте что-то более жесткое, например SHA256 или SHA512, по крайней мере, вы уменьшите вероятность до разумная степень, проверяя больше битов. MD5 Чрезвычайно слаб для условий столкновения.
Я также советую людям читать списки рассылки здесь под названием «проверка файлов»: http://london.pm.org/pipermail/london.pm/Week-of-Mon-20080714/thread.html
Если вы говорите «MD5 может однозначно идентифицировать все файлы», то у вас логическая ошибка.
Учитывая диапазон значений, варьирующихся по длине от 40 000 байтов в длину до 100 000 000 000 байтов в длину, общее число комбинаций, доступных для этого диапазона, значительно превышает возможное число значений, представленных MD5, с весом всего 128 битов.
Представлять 2 ^ 100 000 000 000 комбинаций только с 2 ^ 128 комбинациями? Я не думаю, что это вероятно.
Наименее Наивный путь
Наименее наивный и самый быстрый способ отсеять дубликаты заключается в следующем.
Fdupes делает это. И вы должны использовать программное обеспечение, которое использует те же критерии.
источник
Это одна строка на Unix-подобных (включая linux) ОС или Windows с установленным Cygwin:
md5sum (который примерно на 50% быстрее) можно использовать, если вы знаете, что нет преднамеренно созданных столкновений (у вас будет больше шансов выиграть 10 крупных лотерей, чем шанс найти одно естественное столкновение md5.)
Если вы хотите увидеть все дубли, которые у вас есть, а не удалять их, просто измените
unlink $file
деталь наprint $file, "\n"
.источник
Я использовал
fdupes
(написано на C) иfreedups
(Perl) в системах Unix, и они также могут работать в Windows; Есть также похожие те , которые заявляются к работе на Windows:dupmerge
,liten
(написанный на Python) и т.д.источник
Чтобы удалить дубликаты изображений в Windows, взгляните на DupliFinder. Он может сравнивать изображения по различным критериям, таким как имя, размер и фактическая информация об изображении.
Другие инструменты для удаления дубликатов файлов можно найти в этой статье Lifehacker .
источник
Вместо DupliFinder попробуйте раздвоенный проект DeadRinger . Мы исправили множество ошибок в первоначальном проекте, добавили кучу новых функций и значительно улучшили производительность.
источник
Одним из вариантов может быть Dupkiller .
источник