我需要你的帮助!我会尝试尽可能具体。
场景:我在Linux发行版上有一个MOUNTED图像。我将这个已挂载的Distro中的所有文件复制到我的Linux系统上名为“raw”的文件夹中(在Files ... so Files / Raw的子目录中)。我在此Raw文件夹中的所有文件的文本文件中创建了一个HASH LIST(MD5使用md5sum)。我将这个HASH LIST删除(删除冗余哈希)到一个名为“UniqueHashes.txt”的新文本文件中
任务:基本上我现在需要做的是遍历整个Raw文件夹并将具有匹配MD5哈希的EACH文件复制到UniqueHashes.txt中的一个哈希值。 / p>
我在想的是:使用find循环使用RAW。 -type f,然后对每个文件进行散列,并将该散列值与我创建的唯一散列列表中的每一行进行比较。如果它存在于唯一哈希列表中,则将该文件(保留时间戳)复制到DD中,否则忽略该文件。
它需要在BASH中。非常感谢您的帮助。我不希望你在代码中给我答案,但如果你这样做,那就太棒了。但是,你可以给我解决这个问题的任何指导都会很棒!!!
提前致谢!
答案 0 :(得分:3)
使用fdupes
,这是您的软件包管理器提供的一个漂亮的第三方工具:
fdupes -d -r files/raw
对于每组相同的文件,将提示您要保留哪些重复文件。
其他选项包括
fdupes -d -r -N files/raw
自动保留一个随机的,或
fdupes -L -r files/raw
到硬链接重复,使目录显示相同,只使用更少的空间。
答案 1 :(得分: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
)