
Я хотел бы сравнить каталоги с бинарными файлами. На самом деле, мне не интересно, в чем заключаются фактические различия между файлами, а интересно, есть ли разница (и какие файлы отличаются). Раньше я использовал meld
, но он не может сравнивать бинарные файлы.
Какой инструмент сравнения файлов может это сделать?
ПРИМЕЧАНИЕ:Неважно, графический ли это инструмент или просто командная строка.
решение1
Это можно легко сделать с помощью diff
. Например:
$ ls -l foo/
total 2132
-rwxr-xr-x 1 terdon terdon 1029624 Nov 18 13:13 bash
-rwxr-xr-x 1 terdon terdon 1029624 Nov 18 13:13 bash2
-rwxr-xr-x 1 terdon terdon 118280 Nov 18 13:13 ls
$ ls -l bar/
total 1124
-rwxr-xr-x 1 terdon terdon 1029624 Nov 18 13:14 bash
-rwxr-xr-x 1 terdon terdon 118280 Nov 18 13:14 ls
$ diff bar/ foo/
Only in foo/: bash2
В приведенном выше примере каталоги foo/
и bar/
содержат двоичные файлы bash2
только в формате foo/
.
Итак, вы можете запустить что-то простое, например:
$ diff bar/ foo/ && echo "The directories' contents are identical"
Это покажет вам разные файлы, если таковые имеются, или выведет "Содержимое каталогов идентично", если они есть. Чтобы сравнить подкаталоги и любые файлы, которые они могут содержать, используйте diff -r
. Объедините его с -q
, чтобы подавить вывод для текстовых файлов.
решение2
Сравнить два файла можно с помощью cmp
команды
Применение:
cmp file1 file2
Это даст разницу в количестве байтов и номер строки.
решение3
Полное сравнение, показывающее идентичные, различные и находящиеся только в одной или другой папке или подпапках:
diff -rqs bar/ foo/
(Вы получите некоторый вывод для каждого файла, нет необходимости в «идентичности каталогов»)