使用md5从目录中删除相同的二进制文件

时间:2019-06-06 12:21:32

标签: linux diff md5 binaryfiles

在Linux机器上,我说有100k二进制文件。我知道我有完全相同的文件,如何使用md5将所有重复的文件从文件夹中删除? 我尝试过使用diff + xxd没有运气

1 个答案:

答案 0 :(得分:0)

嗨,欢迎来到StackOverflow!

您可以使用md5sumawk以单线方式执行此操作:

# Execute in the same directory as your files:

md5sum * | awk '{ if (FILES[$1] != "") { print $2 " is a duplicate with " FILES[$1] } else { FILES[$1] = $2 } }'

如果要在同一步骤中删除,而不仅仅是打印文件名:

md5sum * | awk '{ if (FILES[$1] != "") { system("rm " $2) } else { FILES[$1] = $2 } }'

它的作用如下:

  • 获取md5sum的输出并将其传递给awk
    • 输出为md5-哈希和文件名,用空格分隔:44e48799743fd961ee523c1e3e3ac7cd 991.data
  • 检查我们的数组FILES中是否已经有此哈希值
  • 如果数组包含哈希,请打印重复的警告/删除文件
  • 如果数组中不存在,请将其存储在数组中

希望这对您有帮助!