【问题标题】:BASH: dealing with duplicates using md5sumBASH:使用 md5sum 处理重复项
【发布时间】:2013-10-27 23:46:26
【问题描述】:

在我的目录中查找重复项时,我设法将哈希与文件路径分开。我的下一个任务是只打印重复项(例如:3 个文件,2 个重复项)。

到目前为止,我所做的是将输出放在这样的数组中:

arr=( $(find $1 -type f -print0 | xargs -0 md5sum | sort | uniq -w32 --all-repeated=separate) )

我需要计算每个文件(不是原始文件)的重复数量,获取每个文件的大小并分别列出它们的路径。

我尝试在我的 arr 中执行 for 循环,但我无法比较哈希值,它给了我 value too great for base 错误。

任何提示都会很棒。

已解决

for ((i = 0 ; i < ${#arr[@]} ; i++ ))
do 
//...compare here
done

【问题讨论】:

  • 你的 for 循环是什么样的?你如何比较哈希值?
  • "value too great for base" 听起来您正在尝试将哈希值作为整数进行比较,而您应该做的是字符串比较。正如@DigitalTrauma 所说,展示你的代码。
  • 我的问题实际上已经解决了我不得不使用forloop而不是:for i in arr。然后我简单地使用 ${arr[i]} 来迭代然后比较!

标签: arrays bash duplicates md5 md5sum


【解决方案1】:

这是循环的解决方案:

for ((i=0 ; i<${#arr[@]} ; i++ ))
do 
//...compare here
done

在初始化 'i' 并进行比较时,请确保保留空格。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-15
    • 2017-05-02
    • 2016-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多