在Bash中重复数据消除和复制文件?

在Bash中重复数据消除和复制文件?,bash,hash,copying,Bash,Hash,Copying,我需要你们的帮助!我会尽量说得具体一些 场景:我在Linux发行版上安装了一个映像。我将这个挂载发行版中的所有文件复制到Linux系统上名为“raw”的文件夹中(在文件的子目录中…so files/raw)。我在这个原始文件夹中的所有文件的文本文件中创建了一个哈希列表(使用md5sum的MD5)。我将这个散列列表重复(去掉冗余散列)到一个新的文本文件中,名为“UniqueHashes.txt” 任务:基本上我现在需要做的是遍历整个原始文件夹,并将每个具有匹配MD5哈希的文件复制到UniqueHa

我需要你们的帮助!我会尽量说得具体一些

场景:我在Linux发行版上安装了一个映像。我将这个挂载发行版中的所有文件复制到Linux系统上名为“raw”的文件夹中(在文件的子目录中…so files/raw)。我在这个原始文件夹中的所有文件的文本文件中创建了一个哈希列表(使用md5sum的MD5)。我将这个散列列表重复(去掉冗余散列)到一个新的文本文件中,名为“UniqueHashes.txt”

任务:基本上我现在需要做的是遍历整个原始文件夹,并将每个具有匹配MD5哈希的文件复制到UniqueHashes.txt中的一个哈希中

我想做的是:使用find在RAW中循环-键入f,然后对每个文件进行散列,并将该散列与我创建的唯一散列列表中的每一行进行比较。如果它存在于唯一哈希列表中,则将该文件(保留时间戳)复制到DD中,否则忽略该文件

它需要在BASH中。非常感谢你的帮助。我不希望你用代码给我答案,但如果你这么做了,那就太棒了。然而,你能给我的任何指导来解决这个问题都将是惊人的


提前谢谢

使用
fdupes
,这是一个漂亮的第三方工具,可从您的软件包管理器获得:

fdupes -d -r files/raw
对于每组相同的文件,将提示您要保留哪些重复文件

其他选择包括

fdupes -d -r -N files/raw 
自动保留一个随机的,或

fdupes -L -r files/raw

要硬链接重复项,请使目录看起来相同,只需占用较少的空间

非常感谢你的帮助!我会测试一下,然后告诉你结果。顺便说一句,什么是#&测试-f$dest怎么了?再次感谢!我对此进行了注释,但它会检查其中一个副本是否已复制到目标。你需要一个类似的测试,但不使用我认为的文件名。我一直得到这个:md5sum:AHCache:是一个目录,然后它停在那里。你太棒了!这个更新很有魅力,唯一的问题是,它不是递归的。我无法浏览目录。它只返回我所在目录中的文件,不进入任何子目录检查这些文件。非常感谢。我欠你很多。根据手册页,
fdupes-d-r-N files/raw
应该完成与第二个示例相同的任务,并通过管道输入yes命令。
(
IFS=$(echo -en "\n\b")
for file in $(find -printf '%P\n'); do
  if [ -f $file ]; then
    md5=$(md5sum $file | cut -d' ' -f1)
    if grep $md5 Unique # && test ! -f $dest
    then
      # copy source dest 
    fi
  else
    # create a directory at the dest?
  fi  
done
)