Какой самый простой способ (используя графический инструмент или командную строку в Ubuntu Linux) узнать, являются ли два двоичных файла одинаковыми или нет (за исключением отметок времени)? Мне не нужно на самом деле извлечь разницу. Мне просто нужно знать, одинаковы они или нет.
186
cmp
специально говорит, что это делает байтовое сравнение, так что это мой по умолчанию для 2 двоичных файлов.diff
является построчным и даст вам тот же ответ Да / Нет, но, конечно, не тот же дамп в стандартный поток вывода. Если строки длинные, потому что, возможно, они не являются текстовыми файлами, я бы предпочелcmp
.diff
имеет преимущество в том, что вы можете указать сравнение каталогов и-r
рекурсию для сравнения нескольких файлов в одной команде.Ответы:
Стандартный Unix
diff
покажет, являются ли файлы одинаковыми или нет:Если команды не выводятся, это означает, что файлы не имеют различий.
источник
diff: memory exhausted
при сравнении двух файлов 13G.diff
говорит вам, что они "двойные" мухи. Поскольку все файлы можно считать двоичными, это странное утверждение.diff -s 1.bin 2.bin
илиdiff --report-identical-files 1.bin 2.bin
Это показываетFiles 1.bin and 2.bin are identical
Используйте
cmp
команду. Это либо завершится чисто, если они двоично равны, либо распечатает, где происходит первое различие, и завершится.источник
cmp
более эффективно, чемdiff
. Так что я бы предпочел это.cmp $1 $2 && echo "identical" || echo "different"
cmp
имеет «тихий» режим:-s, --quiet, --silent
-suppress all normal output
. Я еще не тестировал, но думаю, что он остановится на первой разнице, если она будет.Я обнаружил, что я искал Visual Binary Diff , доступный на:
Ubuntu:
Arch Linux:
Mac OS X через MacPorts :
Mac OS X через Homebrew:
источник
Используйте sha1 для генерации контрольной суммы:
источник
diff
иcmp
оба скажут вам, если они отличаются без каких-либо дополнительных усилий.sha1sum
вместоsha1
?В итоге я использовал hexdump для преобразования двоичных файлов в шестнадцатеричное представление, а затем открыл их в meld / kompare / любом другом инструменте сравнения. В отличие от вас я был после различий в файлах.
источник
hexdump -v -e '/1 "%02x\n"'
если вы хотите, чтобы diff и увидеть точно, какие байты были вставлены или удалены.Вы можете использовать функцию хеширования MD5, чтобы проверить, совпадают ли два файла, при этом вы не сможете увидеть различия на низком уровне, но это быстрый способ сравнить два файла.
Если оба MD5-хэша (вывод команды) одинаковы, то эти два файла не отличаются.
источник
Используйте команду cmp. Обратитесь к Бинарным файлам и Принудительному Сравнению текста для получения дополнительной информации.
источник
-b
не сравнивает файлы в "двоичном режиме". Это на самом деле «В GNUcmp
вы также можете использовать опцию-b
или,--print-bytes
чтобы показать ASCII-представление этих байтов». Это именно то, что я нашел, используя URL к руководству, которое вы предоставили.cmp
по сути бинарное сравнение на мой взгляд.-b
Вариант просто печатает первые байты , который отличается.Для поиска дефектов флэш-памяти мне пришлось написать этот скрипт, который показывает все блоки размером 1 КБ, которые содержат различия (не только первый, как это
cmp -b
делается)Вывод:
Отказ от ответственности: я взломал сценарий за 5 минут. Он не поддерживает аргументы командной строки и не поддерживает пробелы в именах файлов.
источник
sh -x
для отладкиreadlink -f $(which sh)
/bin/dash
. В настоящее время создаю пасту на пастин.Diff со следующими параметрами выполнит двоичное сравнение, чтобы проверить, отличаются ли файлы вообще, и выдает, если файлы одинаковые:
Если вы сравниваете два файла с одинаковыми именами в разных каталогах, вы можете использовать эту форму вместо:
OS X El Capitan
источник
Попробуйте diff -s
Краткий ответ: беги
diff
с-s
переключателем.Длинный ответ: читайте ниже.
Вот пример. Давайте начнем с создания двух файлов со случайным двоичным содержимым:
Теперь давайте сделаем копию первого файла:
Теперь test1.bin и test2.bin должны отличаться:
... и test1.bin и copyoftest1.bin должны быть идентичны:
Но ждать! Почему нет выхода?!?
Ответ: это по замыслу. Нет вывода одинаковых файлов.
Но есть разные коды ошибок:
К счастью, теперь вам не нужно проверять коды ошибок каждый раз, потому что вы можете просто использовать переключатель
-s
(или--report-identical-files
), чтобы сделать diff более подробным:источник
Попробуйте,
radiff2
который является частьюradare2
дизассемблера. Например, с помощью этой команды:Вы получаете довольно отформатированный вывод двух столбцов, где различия выделены.
источник
Мои любимые, использующие xxd hex-dumper из пакета vim:
1) используя vimdiff (часть vim)
2) используя diff
источник
Если md5sum одинакова, двоичные файлы совпадают
Например
источник
diff
, над которым нет причин предпочитать его.Существует относительно простой способ проверить, совпадают ли два двоичных файла.
Если вы используете файл ввода / вывода на языке программирования; Вы можете хранить каждый бит обоих двоичных файлов в своих собственных массивах.
На этом этапе проверка так же проста, как:
источник