检测重复文件

xra*_*alf 5 algorithm hash duplicates

我想检测目录树中的重复文件.如果找到两个相同的文件,则只保留其中一个副本,并删除剩余的重复项以节省磁盘空间.

复制意味着具有相同内容的文件可能在文件名和路径上不同.

我正在考虑为此目的使用哈希算法但是有可能不同的文件具有相同的哈希值,所以我需要一些额外的机制来告诉我文件不一样,即使哈希值是相同的因为我不喜欢我想删除两个不同的文件.

您会使用哪种额外快速可靠的机制?

Shi*_*dim 17

计算哈希将使您的程序运行缓慢.你也可以检查文件大小.所有重复文件应具有相同的文件大小.如果他们共享相同的文件大小应用哈希检查.它会让你的程序表现得更快.

可以有更多的步骤.

  1. 检查文件大小是否相等
  2. 如果步骤1通过,检查第一个和最后一个字节范围(比如100个字节)是否相等
  3. 如果第2步通过,请检查文件类型,
  4. 如果第3步通过,请最后检查哈希值

您添加的条件越多,它的执行速度就越快,您可以通过这种方式避免最后的手段(哈希).

  • 不,如果`md5("filea")== md5("fileb")`和`sha1("filea")== sha1("fileb")`你对filea和fileb的保证比if if更强你只使用一个哈希函数. (3认同)
  • 有一点需要注意:如果最常见的情况是有大量重复(更具体地说是重复和非重复之间的高比率),那么仅在步骤4中计算散列不会比跳过慢得多前三个步骤.例如,如果从未删除旧图像的数码相机导入图像. (2认同)