@Adept006

Как сравнить два файла (по md5 или еще как-то) в bash?

Нужно сравнить два файла (к примеру /tmp/file1 и /tmp/file2) на сходство по хешу или содержимому чтобы результат соответственно был True или False
  • Вопрос задан
  • 1025 просмотров
Решения вопроса 1
Для текстовых файлов можно попробовать с diff:
diff -q file1 file2
Если файлы одинаковые – ничего не выведет. Если различаются, вывалит различия.

if [ -z "$(diff -q file1  file2)" ]; then
  echo "Одинаковые"
else
  echo "Они такие разные!"
fi


upd. Спасибо nick3iro за подсказку про команду cmp: она сравнивает файлы побайтово и выходит со статусом 0, если файлы идентичны; 1 если различаются; 2 если произошла ошибка. Можно примерно так её использовать в скрипте:
if cmp -s  file1  file2 ; then
  echo "Одинаковые"
else
  echo "Они такие разные!"
fi
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
Zoro
@Zoro
a=$(md5sum $file_a | awk '{print $1}')
b=$(md5sum $file_b | awk '{print $1}')

if [[ "$a" == "$b" ]]; then
echo "без изменений"
else
echo "файлы разные"
fi
Ответ написан
jcmvbkbc
@jcmvbkbc
http://dilbert.com/strip/1998-08-24
if cmp -s file1 file2 ; then echo Same ; else echo Different ; fi
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы