【问题标题】:Comparison between two big directories两个大目录的比较
【发布时间】:2009-03-03 15:07:33
【问题描述】:

我有一个大目录,其中仅包含 CS 和数学方面的内容。它的大小超过 16GB。类型为文本、png、pdf 和 chm。我目前有两个分支:我兄弟的分支和我的分支。最初的文件是相同的。我需要比较它们。我曾尝试使用 Git,但加载时间很长。

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

[混合解决方案]

  1. 在两个目录中执行“ls -R > different_files” [1]
  2. "sdiff

你怎么看?有什么缺点吗?

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

【问题讨论】:

  • 您期望得到什么结果? IE。你如何比较两张图片?
  • 你试过'diff -r'吗?这个编程有什么关系?
  • @David Segonds 我对算法感兴趣。我没有回答这个问题,因为我觉得有现成的工具可以完成任务的某些部分。感谢您的评论!
  • @Drakosha 我想我必须简单地排除照片。这不是问题。

标签: comparison directory


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

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

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

    您使用的散列算法无关紧要。您可以使用 MD5、SHA、CRC、... 您还可以使用输出文件中的文件大小来帮助减少冲突的机会。

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

    现在,如果您只想要一个程序,请使用diff -rwindiff 用于基于Windows 的系统。

    【讨论】:

    • find pathtofolder -type f -print0 | xargs -0 md5sum | sort | md5sum 第一个具有预先存在的命令,但文件路径有所不同。
    【解决方案3】:

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

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

    【讨论】:

      【解决方案4】:

      您是否只是想发现一个文件中存在哪些文件而另一个文件中没有,反之亦然?几个建议:

      1. 在两个目录中执行“ls -R”,重定向到文件,然后比较文件。

      2. 在它们之间执行“rsync -n”以查看如果允许复制 rsync 必须复制的内容。 (-n 表示不执行 rsync,只是告诉你如果没有 -n 运行它会做什么)

      【讨论】:

      • 谢谢!我混合了你的解决方案和布赖恩的解决方案来得到我的解决方案:#########1。在两个目录中执行“ls -R > different_files”#########2。 sdiff
      【解决方案5】:

      我会通过比较md5sum * | sort的输出来diffing

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

      【讨论】:

        【解决方案6】:

        我知道这个问题已经得到解答,但是如果您自己不打算编写这样的工具,那么 sourceforge 上有一个名为 tardiff 的运行良好的开源项目,它基本上可以满足您的需求,甚至支持自动创建补丁(显然是 tar 格式)以解决差异。

        希望对你有帮助

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2020-01-18
          • 2023-04-05
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-10-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多