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

yll*_*ate 1 shell deduplication rmlint duplicate-files

我有两个地点/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
Run Code Online (Sandbox Code Playgroud)

小智 5

根据文档,标记就是您所需要的

\n

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

\n

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

\n

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

\n

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

\n
$ rmlint --keep-all-tagged --must-match-tagged /media/portable // ~\n
Run Code Online (Sandbox Code Playgroud)\n

希望能帮助到你!

\n