我正在重新组织硬盘上的某些文件,并且有一个文件夹的旧副本,我想要做的是确保文件夹 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