在探索合并两个文件夹的选项时,我遇到了一个非常强大的工具,称为林特。它有一些有用的文档(和温柔的引导)。
我之前提到过一个场景,我收到了一些很好的答案:
如何合并两个文件夹以便从一个文件夹中删除相同的文件,同时保留校验和差异?
我倾向于rdfind
答案,但当我进行一些研究时,我偶然发现rmlint
并发现了开发人员的讨论关于重复隔离的问题非常清楚。
在回顾所有这些时,我发现了一些有趣的论点:
--merge-directories --honour-dir-layout
于是我尝试了如下咒语:
rmlint -T "bi,bl,df,dd" --progress --merge-directories --honour-dir-layout A B
不幸的是,考虑到我的大型场景,我要执行的保存的命令相当巨大,并且到目前为止还没有真正能够隔离可管理的较小子集来测试以在启动之前建立任何程度的置信度。我试图找到一种方法来进行试运行,这样它可能会打印出它将要做什么,而不是在脚本中向我展示它,以便模拟将要采取的操作,但我没有找到这个选项(也许我只是睡眼惺忪地忽略了它?)。
因此,我认为我可以而且应该为此提出一个问题:
有没有人在合并重复数据集方面取得过成功rmlint
,如果是这样,您建议使用什么参数来合并两个文件夹,以便可以合理地满足我之前问题的目标?
简单重申一下:最终目标是将 B 特有的所有内容放入 A 中,同时删除 A 中已存在的 B 中的所有内容以及 A 和 B 之间存在数据内容冲突(即非唯一内容)的内容然后将两者都保留下来进行手动比较,这样执行后在 B 中就可以相对容易地找到它们。
答案1
确实rmlint
似乎比 更适合这项任务rdfind
。我喜欢它输出一个 shell 脚本,您可以检查该脚本以验证它不会执行您实际上并不打算执行的操作。
对于您的用例,我被手册中讨论的部分所吸引标记原始目录,因为您显然有一个“原始”目录和一个“重复”目录。
这个例子看起来你可以用它作为起点:
# Find all files on /media/portable that can be safely deleted:
$ rmlint --keep-all-tagged --must-match-tagged /media/portable // ~
请注意,您的原始目录来自后,我发现有点//
令人惊讶(默认情况下,该工具似乎更喜欢将文件保留在早些时候争论)。所以rmlint --keep-all-tagged --must-match-tagged B // A
。
(注:我没有个人经验rmlint
,我只是参考文档)