我diff: memory exhausted在尝试比较两个 27 GB 文件时出现错误,这些文件在具有 CentOS 5 和 4 GB RAM 的 Linux 机器上非常相似。这似乎是一个已知问题。
我希望这种基本实用程序有替代方案,但我找不到。我想该解决方案必须使用临时文件而不是内存来存储它需要的信息。
rdiffand xdelta,但它们更适合显示两个文件之间的更改,例如补丁,并且对于检查两个文件之间的差异没有那么有用。diff.vimdiff仅适用于较小文件的实用程序。bdiff但找不到适用于 Linux 的端口。除了将文件分成更小的部分之外还有什么想法吗?我有 40 个这样的文件,所以尽量避免将它们分解。
小智 13
cmp逐字节执行操作,因此它可能不会耗尽内存(仅在两个 7 GB 文件上对其进行了测试)——但您可能正在寻找比“文件X和Y字节不同的列表”更多的细节x,第y行”。如果您的文件的相似性是偏移的(例如,文件Y具有相同的文本块,但不在同一位置),您可以将偏移量传递给cmp; 你可以把它变成一个小脚本的重新同步比较。
旁白:万一其他人在寻找一种方法来确认两个目录结构(包含非常大的文件)是相同的:(
diff --recursive --brief或diff -r -q简而言之,甚至可能diff -rq)将工作并且不会耗尽内存。