如何检查文件夹 A 中的每个文件是否存在于文件夹 B 中?

如何检查文件夹 A 中的每个文件是否存在于文件夹 B 中?

我正在重新组织硬盘上的某些文件,并且有一个文件夹的旧副本,我想要做的是确保文件夹 A(旧副本)中的每个文件都存在于文件夹 B 中。每个文件夹至少包含 200 个文件,其中大多数可能是重复的。

警告:我不能只检查文件名,还必须确保它们具有相同的内容(à la fdupes)。

我检查了手册页,看fdupes是否有办法进行逆操作(即找出哪些文件我尝试了多种方法(例如,尝试查找任何副本)但却一无所获,即使该功能存在,我仍然有一些文件只存在于文件夹 B 中。

这两个问题类似,但仅限于 Windows,因此没有太大帮助:

提前致谢。

答案1

如果您已经有重复文件的列表,只需将其与所有文件的列表进行比较即可找到单个文件:

fdupes -r dir1 dir2 | grep -vwFf- <(find dir1 dir2 -type f)
  • -w仅计算整个单词(不是子字符串,因此文件abcd不匹配abc
  • -F认为模式是文字,而不是正则表达式
  • -f使用指定的文件(-在本例中为标准输入)作为要匹配的表达式列表。
  • -v您可能知道,显示不匹配的线条。

这应该输出一个列表,其中包含仅在其中一个文件夹中找到的文件,通过浏览或 grepping 文件夹 A 的名称(下面称为dir1),应该很容易验证它们都在文件夹 B 中,如下所示:

fdupes -r dir1 dir2 | grep -vwFf- <(find dir1 dir2 -type f) | grep -F dir1

相关内容