Linux中检查相同文件并根据位置删除

Linux中检查相同文件并根据位置删除

我使用 fdupes 查找并删除相同的文件。

但我希望能够说这样的话......

  • 查找目录 A 或其子目录中所有重复的文件
  • 如果子目录 B 和 C 中有重复的文件,则始终删除 B 中的文件

换句话说,将 B 中尚未存在的所有文件保留在 C 中。请注意,目录结构不相同,因此 rsync 在这里没有用处。

我不认为 fdupes 提供此功能。我必须手动选择为每对删除/保留哪些。

所以我正在考虑编写一个快速的 Python 脚本来完成同样的事情。但是有没有一个我可以从 Python 调用的快速系统命令,它可以为每个文件提供某种唯一的 id,这是查看两个文件是否相同的可靠方法。我正在考虑一些不涉及我将文件加载到 python 中并散列其内容的事情。

答案1

不,散列是了解多个文件是否匹配的唯一快速方法,但是您可以通过仅比较相同大小的文件来加快速度,如果没有人尝试冲突,也可以选择像 md5 这样的快速散列...这是使用 git/zfs/etc 为您完成

要不就

fdupes -r A B | grep B | xargs -I {} rm "{}"

相关内容