![如何检查重复文件?](https://linux22.com/image/1234096/%E5%A6%82%E4%BD%95%E6%A3%80%E6%9F%A5%E9%87%8D%E5%A4%8D%E6%96%87%E4%BB%B6%EF%BC%9F.png)
我有一个外置硬盘,我曾多次备份过文件。有些文件在备份期间被修改过,有些则没有。有些文件可能被重命名了。现在我的空间快用完了,我想清理重复的文件。
我的想法是检查md5sum
驱动器上的每个文件,然后查找重复文件和diff
相关文件(以防万一,哈哈)。这是最好的方法吗?还有哪些其他方法可以检查重复文件?
答案1
计算每个文件的 MD5 哈希值(问题和答案链接中建议)似乎是一种相当“昂贵”的解决问题的方法。忽略每个哈希值的实际计算,仅仅读取每个文件就会在(极慢的)硬盘上产生大量工作。
我对“算法”的建议是这样的:
- 获取驱动器(或目录,或其他)上每个文件的准确长度。这应该相对便宜,因为长度可能存储在文件系统的索引部分中。
- 对于每个具有多个关联文件的独特文件大小,计算每个文件的 MD5 并比较哈希值以发现重复项。虽然可能性不大,但两个长度相同的文件可能会哈希为相同的值。如果您不想冒误报的风险,请逐字节比较文件或在哈希比较之后进行比较。
- 对于其他每个唯一文件大小,都没有任何重复项。
答案2
如果 md5 表示这是同一个文件,则不需要 diff。人们已经多次解决了这个问题,因此您可以按照他们的方式进行做过。