MyTetra Share
Делитесь знаниями!
О, смотри-ка какое хорошее место. Дайте два!
Как сравнивать бинарные файлы в Linux. Вариант с помощью diff и cmp.
30.12.2011
21:38
Текстовые метки: linux, diff, сравнение бинарных файлов, cmp
Раздел: Компьютер - Linux - Bash - Команды и скрипты

Для сравнения бинарных файлов можно воспользоваться командами:


diff -u <(od -A x -t x1 ref.bmp) <(od -A x -t x1 orig.bmp)


или


diff <(xxd orig.bmp) <(xxd ref.bmp)


Что делают эти команды? Сначала выводится содержимое файлов в HEX-виде с помощью команд od или xxd. А потом через diff сравнивается уже это HEX-представление.


Однако надо понимать, что большие файлы (около 2 GB) таким способом сравнить невозможно, как минимум на 32-х битных системах. Будет появляться ошибка:


diff: память исчерпана


Причем, судя по htop, память не расходуется. Это какие-то внутренние ограничения толи diff, толи od, толи xxd, толи механизма потока. Как обойти эту проблему - не знаю.



Вместо команды diff можно воспользоваться командой cmp:


cmp -b -l file1 file2

683263 161 q 150 h

683264 222 M-^R 377 M-^?

683265 212 M-^J 354 M-l


Программа cmp способна нормально работать с большими файлами. Она показывает адрес байта и два значения - в первом и втором файле.



Для интерактивного сравнения можно воспользоваться программой vbindiff.


Так же в этом разделе:
← Содержание ...
 
MyTetra Share v.0.36
Яндекс индекс цитирования