Требуется приложение командной строки Linux для сравнения двоичных файлов и выхода при первом несовпадении
Существует ли приложение командной строки Linux, которое сравнивает два двоичных файла и завершает работу при первом несовпадении?
cmp
не похоже на выход
2 ответа
cmp
не имеет этой опции, потому что она всегда завершается при первом несоответствии.
$ cmp -b /bin/ls /bin/sed
/bin/ls /bin/sed differ: byte 25, line 1 is 320 M-P 300 M-@
Я думаю, что вы могли бы пойти с помощью 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 каждый раз, когда вы редактируете один из этих файлов, то вы можете сравнить только это, чтобы быстро найти, совпадают они или нет. В этом случае я предполагаю, что у вас есть много файлов для сравнения.