如何使用“rmlint”仅从一个位置删除重复项并保持其他位置不变?

如何使用“rmlint”仅从一个位置删除重复项并保持其他位置不变?

我有两个地点/path/to/a/path/to/b.我需要在两个路径中查找重复的文件并仅删除/path/to/b项目中的项目。 rmlint生成相当大的删除脚本,但它包含两个路径(甚至空文件夹)中要删除的条目。

rmlint使用以下参数运行以获得此结果,我认为该结果只会被/path/to/a选择删除:

rmlint -g -e -S p /path/to/a /path/to/b

答案1

根据文件显示,标记就是你所需要的

要使用标记,您可以使用//. // 分隔符之后的每个路径都被视为“标记”,并在可能的情况下被视为原始路径

例如,rmlint a // b将“a”路径标记为重复路径,将“b”标记为原始路径

为了永远不删除任何标记的文件,有-k( --keep-all-tagged) 选项。另一个选项是-m( --must-match-tagged),它仅查找标记路径中存在原始路径的重复项。

一个简单的例子(取自文档)是:您有一个便携式备份驱动器,上面有一些旧备份。您刚刚将主文件夹备份到新的备份驱动器。您想要重新格式化旧的备份驱动器并将其用于其他用途。但首先您要检查旧驱动器上是否有其他地方没有的内容。旧驱动器安装在/media/portable

$ rmlint --keep-all-tagged --must-match-tagged /media/portable // ~

希望能帮助到你!

答案2

我所做的是:

$ rmlint -g sourceDir // referenceDir -km
  • g:进度条
  • k: --保留所有标记
  • m: --必须匹配标记

然而,我发现如果有多个源目录,有时不遵循 --must-match-tagged 选项。

相关内容