查找具有重复内容的 RAR

查找具有重复内容的 RAR

我需要一个实用程序来查找包含重复数据的 RAR 文件(即 RAR 中的哈希值相同但名称可能不同的文件)。

我可以打开 RAR 并看到 CRC 是相同的,但我希望有一个能够批量(数百个文件)处理的更自动化的过程。

对整个 RAR 进行散列处理不会有帮助,因为其中包含的文件可能有不同的名称,或者档案可能在不同的级别被压缩。

如果需要的话,可以使用提取 RAR 内容然后进行比较的实用程序,但这不是首选。

我更喜欢适用于 Windows 的免费实用程序,但付费实用程序或适用于 Linux 的实用程序也是可以接受的。

答案1

您可能只需一步即可完成所有这些工作,但这样做可能会更容易(linux):

for i in *.rar ; do  unrar l $i | tail -n+8 | head -n-3 | awk -v val=$i '{ printf("\"%s\" \"%s\" \"%s\"\n",val,$1,$8)}' >> rarfiles; done

这将遍历当前目录中的所有文件,并将 rars 中的所有文件输出到名为 rarfiles 的文件中,如下所示:

"rar name" "filename" "crc" 

“head”和“tail”命令只是从 unrar 输出中删除页眉和页脚。然后 awk 提取第一个和第八个字段,$i(rar 文件名)通过 -v 作为参数传递,因此我们可以将其与输出一起打印。

然后

 cat rarfiles | sort -k3,3 | uniq -D -f2

这将显示重复项。sort 参数表示应按第三个字段 (crc) 进行排序,uniq -D 表示仅显示重复的行,忽略前两个字段(这样会跳过“rar 名称”和“文件名”,因此仅显示具有相同 CRC 的重复项。

相关内容