我需要你们的帮助!我会尽量具体。
场景:我在 Linux 发行版上安装了一个镜像。我将这个安装的 Distro 中的所有文件复制到我的 Linux 系统上名为“raw”的文件夹中(在 Files 的子目录中...所以是 Files/Raw)。我在这个 Raw 文件夹中的所有文件的文本文件中创建了一个 HASH 列表(使用 md5sum 的 MD5)。我将这个 HASH LIST 删除(去除了冗余哈希)到一个新的文本文件中,名为“UniqueHashes.txt”
任务:基本上我现在需要做的是遍历整个 Raw 文件夹并将具有匹配 MD5 哈希值的每个文件复制到 UniqueHashes.txt 中的一个哈希值。
我想做的是:使用 find 遍历 RAW。 -type f,然后散列每个文件,并将该散列与我创建的唯一散列列表中的每一行进行比较。如果它存在于唯一哈希列表中,则将该文件(保留时间戳)复制到 DD 中,否则,忽略该文件。
它需要在 BASH 中。非常感谢您的帮助。我不希望您用代码将答案交给我,但如果您这样做,那就太棒了。但是,您能给我解决这个问题的任何指导都会很棒!!!
提前致谢!
最佳答案
使用 fdupes
,这是一个可从您的包管理器获得的漂亮的第三方工具:
fdupes -d -r files/raw
对于每组相同的文件,将提示您要保留哪些重复文件。
其他选项包括
fdupes -d -r -N files/raw
自动保留一个随机的,或者
fdupes -L -r files/raw
硬链接(hard link)副本,使目录看起来相同,只是使用更少的空间。
关于bash - 在 Bash 中删除和复制文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15444213/