如何判断一个文件是否重复但名称不同?

如何判断一个文件是否重复但名称不同?

假设您有一个名为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.这应该会消除更多。

对于仍然可能重复的文件,您可以cksummd5sum它们。

您可能想检查索引节点号是否与原始索引号不同,以防您找到硬链接副本。

答案3

您可以用来fdupes搜索不同目录中的重复文件。默认设置是将重复文件列为由空行分隔的块。

如果两个文件都在一个目录中dir1

fdupes dir1

对于递归搜索,请添加-r/--recurse选项:

fdupes -r dir1

您可以搜索多个目录并为特定目录设置递归选项:

fdupes dir1 dir2 --recurse: dir3

答案4

rmlint -r

林特是一个非常快速的工具,可以查找重复项并根据需要选择删除它们。

特征

发现…

  • …重复的文件和重复的目录。
  • ...未剥离的二进制文件(即带有调试符号的二进制文件)
  • …符号链接损坏。
  • ...空文件和目录。
  • …用户或/和组 ID 损坏的文件。

与其他重复查找器的区别:

  • 极快(毫不夸张,我们保证!)
  • 偏执狂模式适合那些不信任哈希值的人。
  • 许多输出格式。
  • 没有互动性。
  • 仅搜索比某个 mtime 新的文件。
  • 处理重复项的方法有很多。
  • 缓存和重播。
  • btrfs 支持。

教程会温柔地帮助和指导你;)

相关内容