我有两个地点/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 选项。