两个大目录之间的比较

时间:2009-03-03 15:07:33

标签: comparison directory

我有一个大型目录,其中只包含CS和Math中的内容。它的大小超过16GB。类型是text,png,pdf和chm。我目前有两个分支:我哥哥和我的分支。初始文件是相同的。我需要比较它们。我曾尝试使用Git,但加载时间很长。

比较两个大目录的最佳方法是什么?

[混合解决方案]

  1. 在两个目录[1]
  2. 中执行“ls -R> different_files”
  3. “sdiff<(echo file1 | md5deep)<(echo file2 | md5deep)”[2]
  4. 你怎么看?有什么缺点吗?

    [1]感谢Paul Tomblin [2]非常感谢所有回复者!

6 个答案:

答案 0 :(得分:6)

使用fslint:website。该工具的一个选项是“Duplicates”。根据网站的描述: FSlint最常用的功能之一是能够找到重复文件。从硬盘驱动器中删除lint的最简单方法是丢弃可能存在的任何重复文件。通常,计算机用户可能不知道他们在不同名称或目录下的音乐集合中具有完全相同歌曲的四个,五个或更多副本。您可以轻松地在计算机上复制和复制任何文件类型,无论是音乐,照片还是工作文档。收集重复项后,它们会占用可用的硬盘空间。 FSlint提供的第一个菜单选项允许您查找和删除这些重复文件。

答案 1 :(得分:2)

如何比较没有预先存在的命令/产品的2个文件夹:

只需创建一个程序,扫描每个目录并创建每个文件的文件哈希。它输出一个文件,其中包含每个相对文件路径和文件哈希值。

在两个文件夹上运行此程序。

然后,您只需比较2个输出文件,看它们是否相同。要比较这两个文件,您只需将它们加载到一个字符串中并进行字符串比较。

您使用的散列算法并不重要。您可以使用MD5,SHA,CRC,...... 您还可以在输出文件中使用文件大小来帮助减少冲突的可能性。

如何将2个文件夹与预先存在的命令/产品进行比较:

现在,如果您只想要一个执行此操作的程序,请对基于Windows的系统使用diff -rwindiff

答案 2 :(得分:2)

使用md5deep创建这些目录中每个文件的递归md5sum列表。

您可以使用差异工具来比较生成的列表。

答案 3 :(得分:1)

您是否只是试图发现哪些文件不存在于另一个文件中,反之亦然?几点建议:

  1. 在两个目录中执行“ls -R”,重定向到文件,并对文件进行区分。

  2. 在它们之间执行“rsync -n”以查看如果允许复制rsync将要复制的内容。 (-n表示不执行rsync,只显示如果在没有-n的情况下运行它将会执行的操作)

答案 4 :(得分:1)

我会diff比较md5sum * | sort

的输出

这将带您到不同/缺失的文件

答案 5 :(得分:0)

我知道这个问题已经得到了解答,但是如果你不是自己编写这样一个工具,那么在sourceforge上有一个非常好用的tardiff名称的开源项目,基本上就是你的想要,甚至支持自动创建补丁(显然是tar格式)来解决差异。

希望这有帮助