я использую diff file1 file2 и получаю исчерпанную память исключение file1 и файл 2 по 10 ГБ каждый.

я попробовал diff --speed-large-files file1 file2 но это не сработало

Как я могу сравнить два файла file1 и file2 и посмотреть, что изменилось в file2 и записать измененный контент в file2 в другой файл

2 ответа2

0

Gnu diff требует возможности загружать входные файлы в оперативную память.

Согласно этому вопросу, bdiff доступен как часть набора инструментов семейной реликвии и не требует чтения файлов в оперативную память. Вам придется скомпилировать его самостоятельно, так как он не доступен в большинстве дистрибутивов Linux.

У других вопросов о файлах CSV и больших файлах есть альтернативные решения, но ни один из них, кажется, не вполне делает то, что вы хотите.

0

Может быть проще разбить файлы на части и сравнить их по порядку. Например, разделите каждый файл размером 10 ГБ примерно на 100 пронумерованных файлов размером в сто мегабайт. Запустите diff для файлов по порядку, сравнивая outputA01 с outputB01, затем outputA02 с outputB02 и включите его. Похожие вопросы:https://unix.stackexchange.com/questions/1588/break-a-large-file-into-smaller-pieces

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .