Linux工具查找重复文件?


13

我有大量且不断增长的文本文件集,这些文件都非常小(少于100个字节)。我想比较每个可能的文件对,并注意重复的文件。我可以编写一个Python脚本来执行此操作,但是我想知道是否有一个现有的Linux命令行工具(或者可能是这些工具的简单组合)可以执行此操作?

更新(响应mfinni注释):文件全部在一个目录中,因此它们都有不同的文件名。(但是它们都有一个共同的文件扩展名,可以很容易地用通配符选择它们。)


我假设文件名不是重复的,只有内容吗?
mfinni 2010年

pixelbeat.org/fslint如果您正在链接上方查找内容,则可能会帮助您完成此操作。:)
Rajat 2010年

Answers:


22

炸薯条。但是我通常结合使用find . -type f -exec md5sum '{}' \; | sort | uniq -d -w 36


1
这种变化对我find . -name "*.csv" | xargs md5sum | sort | uniq -D -w 34 有用:(我使用uniq -D,我更喜欢使用xargs查找-exec。)
Daryl Spitzer 2010年

+1我并不了解fdupes,该工具看起来非常有用。
Zoredache

3
@Daryl:xargs像这样使用不适用于带空格的文件名,-exec但是可以使用。使用-type f额外的参数find(可一起使用-name)限制搜索文件。
fuenfundachtzig 2012年

对于fdupes +1,因为它对于大型二进制文件也很快速。
Bengt 2012年

在极少数情况下,我的xargs无法正常工作(在处理了一定数量的文件后崩溃),但一直找不到-exec唤醒的对象。@fuenfundachtzig,可以使用xargs -0 --delimiter =“ \ n”处理这类文件。
ychaouche


3

几乎可以肯定,您不想比较每对文件。您可能想要使用md5sums之类的东西来获取所有文件的所有校验和,并将其通过管道传送到其他工具中,该工具将仅报告重复的校验和。


2
您可以通过仅为一个大小不超过一个的文件计算md5sum来减少md5sum的计算数量。因此,对于所有具有唯一大小(以字节为单位)的文件,您都不需要md5sum,因为它们不能重复任何东西。
tomsv 2013年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.