在 Linux 中比较两个大文件而不耗尽内存

在 Linux 中比较两个大文件而不耗尽内存

我正在使用diff file1 file2并出现内存耗尽异常。文件 1 和文件 2 各为 10 GB。

我试过了diff --speed-large-files file1 file2,但是没有用。

如何比较两个文件 file1 和 file2,查看 file2 中发生了哪些变化,并将 file2 上更改的内容写入另一个文件?

答案1

Gnudiff需要能够将输入文件加载到 RAM 中。

根据这个问题bdiff可作为传家宝工具箱并且不需要将文件读入 RAM。不过您必须自己编译它,因为它似乎在大多数 Linux 发行版上都不可用。

其他问题CSV 文件大文件有其他解决方案,但似乎都不能完全满足您的要求。

答案2

将文件分成几部分并按顺序进行比较可能更容易。例如,将每个 10 GB 文件拆分为大约 100 个编号为百兆字节的文件。按顺序对文件运行 diff,比较 outputA01 与 outputB01,然后比较 outputA02 与 outputB02,依此类推。相关问题: https://unix.stackexchange.com/questions/1588/break-a-large-file-into-smaller-pieces

相关内容