Во-первых, предостережение: предполагать идентичность на основе контрольной суммы очень опасно. Не рекомендуется.
Использование контрольной суммы в качестве фильтра для удаления определенных недубликатов - это нормально.
Если бы я делал это, я бы подошел к этому так:
Создать список файлов на основе длины (длина, полное имя пути)
Отсканируйте этот список в поисках возможных повторяющихся длин.
Любые совпадения являются потенциальными дубликатами, и я бы сравнил подозрительные файлы должным образом, если это возможно.
Причиной использования длин является то, что эта информация доступна очень быстро без побитового сканирования файла, как это обычно делается в статистике файловой системы для быстрого доступа.
Вы можете добавить еще один этап сравнения контрольных сумм (для файлов одинаковой длины), если считаете, что это быстрее, чем прямое сравнение файлов, используя аналогичный подход (контрольные суммы рассчитываются один раз). Используйте аналогичный подход (начните со списка совпадающих длин и вычислите контрольные суммы для них).
Выполнение вычисления контрольной суммы полезно только в том случае, если имеется несколько файлов одинаковой длины, и даже в этом случае прямое побайтное сравнение скорее всего найдет несоответствия очень быстро.