Answers:
作为替代方案,将保持jdupes的部分匹配(比完整哈希快得多)
jdupes -r -T -T "$DIR1" "$DIR2" | awk -v p1="$DIR1" -v p2="$DIR2" '$0 ~ p1 && $0 ~ p2' RS="\n\n" ORS="\n\n" | sort > dupes
find "$DIR1 $DIR2" -type f | sort > all
comm -23 all dupes
我创建了两个列表:一个包含重复文件,一个包含所有文件。awk语句确保dupes文件只包含出现在$ DIR1和$ DIR2中的文件(--isolate显然还有其他内容)
然后我使用该comm实用程序来比较它们仅对all列表唯一的文件(而不是欺骗列表)。唯一需要注意的是jdupes只检查每个文件的第一个4K,这可能不足以确保唯一的匹配,所以对于个人使用我碰到了高达1MB并且它仍然运行得非常快。
注意:如果您只想要$ DIR1唯一的文件,请在find命令中删除$ DIR2搜索。
uniq功能的微小修改而不是grep:find DIR1 DIR2 -type f -exec sha1sum {} + | sort | uniq -u --check-chars 40 | cut -c 43-