Требуется приложение командной строки Linux для сравнения двоичных файлов и выхода при первом несовпадении - PullRequest
5 голосов
/ 25 октября 2010

Существует ли приложение командной строки Linux, которое будет сравнивать два двоичных файла и завершать работу при первом несовпадении?

cmp, по-видимому, не имеет опции quit.

Ответы [ 2 ]

11 голосов
/ 25 октября 2010

cmp не имеет этой опции , поскольку она всегда завершается при первом несовпадении.

$ cmp -b /bin/ls /bin/sed
/bin/ls /bin/sed differ: byte 25, line 1 is 320 M-P 300 M-@
4 голосов
/ 25 октября 2010

Я думаю, вы могли бы использовать 3 инструмента:

  • cmp
  • diff
  • md5sum

cmp лучше для двоичных файлов и diff лучше для текстовых файлов. Для двоичных файлов diff просто сообщает, не отличаются ли они.diff работает также и для каталогов.

Любой из первых двух может выполнить то, что вам нужно, молча.diff использует переключатель -q, а cmp использует переключатель -s, чтобы сообщить вам только код возврата: 0, если два файла совпадают с 1, если нет.

cmp также имеет хорошийвозможность избежать (вроде) чтения всего файла (хорошо, если у вас большие файлы): если вы знаете, что файлы могут отличаться в первых N строках или между строками N и M, вы можете сделать это (то есть: для строки N = 10и M = 20):

cmp file1 file2 10 20 

Я добавил md5sum в список, потому что если у вас есть возможность вычислять контрольную сумму MD5 каждый раз, когда вы редактируете один из этих файлов, то вы можете сравнить только это сбыстро найти, если они совпадают или нет.В этом случае я предполагаю, что у вас есть много файлов для сравнения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...