您如何设计算法以列出文件系统中的所有重复文件?我首先想到它使用散列,但我想知道是否有更好的方法来实现它。要记住任何可能的设计权衡吗?
答案 0 :(得分:2)
散列所有文件将花费很长时间,因为您必须阅读所有文件内容。
我建议使用3步算法:
您也可以不进行哈希处理,如果可能的话,同时打开所有文件,并比较内容。这将节省大文件的多次读取。根据您的数据类型,您可以实施许多调整以节省时间(例如:如果2个压缩/ tar文件具有相同的大小> x Ggigabytes大小(和相同的名称),请不要阅读内容,根据您的过程,文件很可能是重复的)
这样,您可以避免散列文件,其大小在系统中是唯一的。节省了大量时间。
注意:我这里不考虑名字,因为我认为名字可能不同。
编辑:我做了一些研究(太晚了),发现如果你使用类似Un * x的系统,fdupes
似乎就是这样做了: