如何比较一个目录而不是另一个目录的两个目录和列表文件?
我需要比较两个目录,并希望找到不重复的文件。文件名足以完成此任务;我并不真正关心内容。
我有很多iPhoto图库,我希望从中获取独特的文件,以便将它们合并到一个库中。我在包装内容中,通过目录查看,我只对原件感兴趣,而不是修改。可能99%+将是重复的,只有20K +文件列表中只有少数几个独立。如果有一个应用程序在那里已经做到这一点,那将是很好的,但我见过的所有内容(应用程序和脚本)只对提供重复项感兴趣。
答案 0 :(得分:1)
您可以使用comm
:
comm <( cd path1 ; ls ) <( cd path2 ; ls )
第一列中的文件对于path1是唯一的,第二列中的文件对于path2是唯一的,第三列中的文件在两个路径中都是通用的。要禁止前两列,请使用
comm -12 ...
要检查整个子树,请使用find
代替ls
,但您需要对输出进行排序:
comm <( cd path1 ; find | sort ) <( cd path2 ; find | sort )