3

我需要你们的帮助!我会尽量具体。

场景:我在 Linux 发行版上有一个 MOUNTED 映像。我将这个已安装的 Distro 中的所有文件复制到我的 Linux 系统上名为“raw”的文件夹中(在 Files...so Files/Raw 的子目录中)。我在这个 Raw 文件夹中所有文件的文本文件中创建了一个 HASH LIST(使用 md5sum 的 MD5)。我将这个 HASH LIST 重复数据删除(去掉了多余的哈希)到一个名为“UniqueHashes.txt”的新文本文件中

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

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

它需要在 BASH 中。非常感谢您的帮助。我不希望你用代码把答案交给我,但如果你这样做,那就太棒了。但是,你能给我的任何指导来解决这个问题都会很棒!!!

提前致谢!

4

2 回答 2

3

使用fdupes,一个漂亮的第三方工具,可以从你的包管理器中获得:

fdupes -d -r files/raw

对于每组相同的文件,将提示您要保留哪些重复文件。

其他选项包括

fdupes -d -r -N files/raw 

自动保留一个随机的,或

fdupes -L -r files/raw

硬链接重复项,使目录看起来相同,只是使用更少的空间。

于 2013-03-16T00:48:01.580 回答
0
(
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
)
于 2013-03-16T00:54:00.657 回答