algorithm - 检测重复文件

标签 algorithm duplicates hash

我想检测目录树中的重复文件。当找到两个相同的文件时,只保留其中一个重复的文件,其余的重复文件将被删除以节省磁盘空间。

重复是指具有相同内容的文件,但文件名和路径可能不同。

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

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

最佳答案

计算散列会使你的程序运行缓慢。您最好还检查文件大小。所有重复文件应具有相同的文件大小。如果它们共享相同的文件大小,则应用散列检查。它将使您的程序执行得更快。

可以有更多的步骤。

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

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

关于algorithm - 检测重复文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9808156/

相关文章:

使用 for 循环删除中间行

ruby - 将作为键值对的字符串转换为 ruby​​ 中的哈希

arrays - 检查方阵是否满秩的最有效方法

algorithm - 从有序集中查找包含图

algorithm - push-relabel 最大流量算法是如何工作的?

java - 没有重复的集合(基于 id)但保留最高版本号

java - 在 Java 中访问 switch 语句中的 block 是直接的吗?

ruby-on-rails - 如何避免 has_many :through relationship? 中的重复项

ruby - 为什么这个 JSON 文件填充了上次哈希数据的 1747 倍?

c - 如何在 C 代码中构建 Perl 哈希?