bash - 在 Bash 中删除和复制文件?

标签 bash hash copying

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

场景:我在 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/

相关文章:

python - Python 如何将 2 个对象视为不相等且不相同,但具有相同的 ID?

java - 有没有办法猜测使用哪种算法生成哈希 key ?

linux - bash 命令 : What's the difference between a variable and an alias?

linux - 如何: Progress bar in bash

bash - 搜索并替换多次出现的情况

arrays - 如何在 BASH 的列中输出数组的内容

c++ - 哈希函数和随机排列

C语言创建文件并将其内容复制到其他文件

Python - 仅将新文件复制到另一个目录