2009-03-03 181 views
3

我有一个大的目录,只包含CS和Math中的东西。它的大小超过了16GB。类型是文本,png,pdf和chm。我目前有两个分支:我兄弟和我的分支。最初的文件是相同的。我需要比较它们。我尝试过使用Git,但是加载时间很长。两个大目录之间的比较

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

[混合溶液]

  1. 执行在两个目录一个的 “ls -R> different_files”[1]
  2. “那么sdiff <(回波的file1 | md5deep)<(回波file2的| md5deep )“[2]

您怎么看?有什么缺点?

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

+0

你期望得到什么结果?即你如何比较2张照片? – Drakosha 2009-03-03 15:09:46

+0

你尝试过'diff -r'吗?这个编程如何相关? – 2009-03-03 15:10:01

+0

@David Segonds我对算法感兴趣。我留下了这个问题,因为我有一种感觉,任务的某些部分有准备好的工具。谢谢你的评论! – 2009-03-03 15:18:43

回答

2

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

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

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

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

您使用的哈希算法无关紧要。您可以使用MD5,SHA,CRC,... 您也可以使用输出文件中的文件大小来帮助减少冲突的可能性。

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

现在,如果你只是想一个程序,这样做,用diff -rwindiff基于Windows的系统。

1

你只是想要发现哪些文件不在另一个文件中,反之亦然?几点建议:

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

  2. 在它们之间做一个“rsync -n”来查看哪些rsync必须复制(如果允许复制)。(-n表示不这样做rsync的,只是告诉你,如果你运行它没有-n它会做)

1

我会diff ING通过比较md5sum * | sort

的输出会带你到不同/丢失的文件

2

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

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

0

我知道这个问题已经得到解答,但是如果你不是自己编写这样一个工具,那么在源码基础上有一个名为tardiff的工作良好的开源项目,它基本上完全符合你的需求,甚至支持补丁的自动创建(显然是tar格式)来解决差异。

希望这有助于

6

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