假设您有一个名为foo.pdf
.如何查明我的计算机是否包含另一个文件(例如bar.pdf
,内容完全相同但名称不同的文件)?
答案1
告诉我这是否有效(不会很快):
find /home/user -type f -name "*.pdf" -exec md5sum {} + 2> /dev/null | uniq -f2 -D
答案2
fdupes
听起来很聪明,但它确实将所有文件匹配在一起。如果您已经有一个想要匹配的文件,则可以更优化地使用一些相同的技术。
您可以首先获取 的文件大小foo.pdf
,然后构造一个find
仅与确切大小匹配的命令。这应该是一个便宜的候选名单。
然后,您可以从每个文件中剪切前几个字节(几百个),并将这些字节与cmp -s
.这应该会消除更多。
对于仍然可能重复的文件,您可以cksum
或md5sum
它们。
您可能想检查索引节点号是否与原始索引号不同,以防您找到硬链接副本。
答案3
您可以用来fdupes
搜索不同目录中的重复文件。默认设置是将重复文件列为由空行分隔的块。
如果两个文件都在一个目录中dir1
:
fdupes dir1
对于递归搜索,请添加-r
/--recurse
选项:
fdupes -r dir1
您可以搜索多个目录并为特定目录设置递归选项:
fdupes dir1 dir2 --recurse: dir3