Поиск в нескольких каталогах, удаление дубликатов файлов

У меня есть каталог файлов, который содержит файлы записей. Я только что получил доступ к новому каталогу с теми же записями, но с дополнительными файлами, но дополнительные файлы спрятаны глубоко внутри других папок, и я не могу их найти. Таким образом, мое решение состояло бы в том, чтобы запустить программу python и удалить все файлы, которые являются дубликатами в двух разных каталогах (и подкаталогах), и оставить другие нетронутыми, что даст мне «новые файлы», которые я ищу.

Я видел пару программ, которые находят дубликаты, но я не уверен, как они работают на самом деле, и они не помогли.

В любом случае я могу выполнить то, что я ищу? Спасибо!


person user989937    schedule 06.06.2012    source источник


Ответы (3)


Возможный подход:

  1. Создайте набор хешей MD5 из исходной папки.
  2. Рекурсивно MD5 хеширует файлы в вашей новой папке, удаляя все файлы, которые генерируют хэши, уже присутствующие в вашем наборе.

Предостережение к вышесказанному заключается в том, что есть вероятность, что два разных файла могут сгенерировать один и тот же хэш. Насколько отличаются файлы?

person Finbarr    schedule 06.06.2012
comment
Возможно, вероятность того, что два разных файла сгенерируют один и тот же хэш, ничтожно мала. По крайней мере, учитывая все исследования, которые ведутся в поисках таких случаев, можно с уверенностью сказать, что это не произойдет случайно. - person niko; 06.06.2012

используйте fslint или другое подобное программное обеспечение. Fslint может, например, предоставить вам список различных файлов и жестко связать копии вместе или удалить дубликаты. Один из вариантов - просто использовать программу, подобную diff, для сравнения каталогов, если их внутренняя структура одинакова.

person Markus Mikkolainen    schedule 06.06.2012
comment
Есть ли Fslint для Windows? - person user989937; 08.06.2012
comment
я не думаю, что есть fslint, но, безусловно, есть альтернативы. Google для fslint windows, и вы получите массу просмотров. - person Markus Mikkolainen; 13.12.2012

Имеют ли они дубликаты файлов в обоих каталогах одинаковое имя/путь? Если я правильно понимаю, вы хотите найти повторяющиеся имена файлов, а не содержимое файла? Если это так, может быть полезен «синхронизированный» вызов os.walk в обоих деревьях.

person Tisho    schedule 06.06.2012
comment
К сожалению, я очень мало знаю о том, как называть вещи. Я знаю программирование на Python, но ничего не знаю о работе с хэшами и тому подобным. Мои файлы будут иметь те же имена, но будут в разных каталогах. Моя цель - найти новые файлы, то есть файлы, которые не являются дубликатами. - person user989937; 07.06.2012