1

Я получил задание сравнить содержимое сотен парных файлов. Я должен быстро сравнить каждую пару и дать ответ, если эта пара равна (по содержанию) или нет. Файлы могут быть текстовыми или двоичными файлами. Не могли бы вы мне помочь?

  1. Я ищу команду, которая работает на всех выпусках UNIX \ Linux
  2. Я предпочел бы использовать наиболее эффективную команду (в отношении времени и производительности)
  3. Я бы предпочел команду, которая поддерживает текстовые и двоичные файлы
  4. Я бы предпочел команду, которая установлена как часть ОС (не сторонняя)

Спасибо!

2 ответа2

7

Если все, что вам нужно знать, это то, отличаются ли файлы или нет, используйте cmp . Или, точнее:

if cmp "$FILE1" "$FILE2"; then
  echo same
else
  echo different
fi

(Или все, что вам нужно сделать, когда они равны / не равны). cmp должен присутствовать в любой posix-подобной системе, работать как с двоичными, так и с текстовыми файлами и немедленно возвращаться, когда обнаруживает разницу, которая примерно такая же высокая, как вы собираетесь получить. (Кроме того, поскольку он не поддерживает строки, он не тратит время на поиск концов строк.)

3

diff должна сделать работу. Используйте его с опцией -q для печати только имен файлов, которые различаются по своему содержанию.

diff -q file1 file2

Если вы хотите поместить файлы целиком в пару каталогов, добавьте опцию -r

diff -r -q dir1 dir2

Обратитесь к документации для получения более подробной информации, набрав man diff

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .