【问题标题】:Selecting md5sums from a text file and remove duplicates in Linux从文本文件中选择 md5sums 并在 Linux 中删除重复项
【发布时间】:2015-11-23 21:11:33
【问题描述】:

我使用了 find 命令并创建了一个名为 Duplicates.txt 的文件,其中包含一堆图像的 md5sum。

如何在文件中查找重复的 md5,然后使用它们从存档中删除重复的 md5?

编辑:我不能使用 fdupes。

【问题讨论】:

  • md5sum [filenames] | awk 'x[$1]++' 为您提供重复项列表(但不包括每组重复项的第一次出现)。
  • 另一种方法是使用扫描目录并查找重复文件的程序(如fdupes) - 如果您需要,有一个很大的替代列表here
  • 检查fdupes程序。

标签: linux bash duplicates md5sum


【解决方案1】:
sort Duplicates.txt|uniq -c|grep -v '^ *1 '

【讨论】:

  • 抱歉,这行不通……他们会有不同的文件名。
【解决方案2】:

假设您以类似于以下方式创建文件Duplicates

find ./dupimgs -type f -print0 | xargs -0 sha1sum > dupes.txt

然后您可以轻松提取使用此单行的唯一文件:

sort dupes.txt  | uniq --check-chars=40 --count | cut -d' ' -f 10

这些是您要保留的文件。我建议将它们移动到另一个目录中,然后删除现在已充满副本的目录:

sort dupes.txt  | uniq --check-chars=40 --count | cut -d' ' -f 10 | xargs -I {} mv {} ./originals
rm -rf ./dupimgs

备注:我使用sha1sum 而不是md5sum。这意味着摘要的长度会有所不同。对于sha1sum,它是 40 个字符。对于md5sumit's 32 hexadecimal digits。因此,您需要更改上述命令中的 40 以匹配您使用的任何散列函数返回的十六进制字符串的长度。

【讨论】:

    【解决方案3】:

    fslint 的重复搜索引擎脚本“findup”背后有一些令人印象深刻的 bash-fu;您感兴趣的位在第 185 行附近。

    我通常会为rmlint 插入一个插件,但看起来您正在寻找一个纯粹的 bash 解决方案。

    【讨论】:

      猜你喜欢
      • 2013-03-27
      • 2013-12-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多