Как сравнить каталоги с бинарными файлами

Как сравнить каталоги с бинарными файлами

Я хотел бы сравнить каталоги с бинарными файлами. На самом деле, мне не интересно, в чем заключаются фактические различия между файлами, а интересно, есть ли разница (и какие файлы отличаются). Раньше я использовал 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/

(Вы получите некоторый вывод для каждого файла, нет необходимости в «идентичности каталогов»)

Связанный контент