Сравнение файлов в Linux (команда diff)
Главная » Linux» Сравнение файлов в Linux (команда diff)
Для сравнения двух или нескольких файлов в Linux есть команда diff. Она может сравнивать как отдельные файлы, так и каталоги. Рассмотрим синтаксис, опции команды diff и несколько примеров использования.
Синтаксис команды diff
Команда diff имеет следующий синтаксис:
diff [опции] файлы-или-директории
Мы указываем опции и подаем на вход два или более файлов или директорий, которые нам нужно сравнить.
Опции команды diff
Рассмотрим основные опции команды diff. Я рассмотрю только те опции, которые сам использую наиболее часто.
| -E | игнорировать изменения, связанные с добавлением символа табуляции в тексте. |
| -b | игнорировать изменения, связанные с добавлением пробелов. |
| -w | игнорировать изменения, связанные с добавлением пробелов и табуляции. |
| -B | игнорировать новые пустые строки. |
| -p (или —show-c-function) | показать название функции языка C, в которой найдены изменения. |
| -y (или —side-by-side) | отобразить результаты в две колонки. |
| -r | просматривать каталоги рекурсивно. |
| -X FILE | исключить из поиска файлы, имена которых совпадают с шаблонами в файле FILE. |
| -d (или —minimal) | попытаться найти как можно меньше изменений (то есть исключить ложные срабатывания). |
Примеры использования команды diff
Сравнение двух текстовых файлов
Для простого сравнения двух текстовых файлов с именами myfile1 и myfile2 выполним в терминале команду:
diff myfile1 myfile2
Вывод команды diff удобно перенаправить в файл с расширением diff. Большинство текстовых редакторов в Linux, например Gedit, распознают этот файл и подсвечивают его синтаксис. Чтобы направить результат сравнения в файл changes.diff нужно использовать символ перенаправления потока (>):
diff myfile1 myfile2 > changes.diff
Сравнение директорий, содержащих текстовые файлы
Рассмотрим пример сравнения двух директорий (mydir1 и mydir2), которые содержат текстовые файлы. Основное отличие здесь от примера выше состоит в том, что мы добавим опцию -r, означающую рекурсивный обход файлов в директориях.
diff -r mydir1 mydir2 > changes.diff
Теперь предположим, что в директориях, в которых мы сравниваем файлы, находится много «мусора», который мы не должны сравнивать. Создадим файл excludeFiles и запишем в него шаблоны и названия файлов, которые мы не должны сравнивать. Например, содержимое excludeFiles может иметь вид:
*.o
ChangeLog*
*.bak
*.exe
Теперь укажем команде diff, чтобы она использовала наш файл excludeFiles при сравнении каталогов:
diff -r -X excludeFiles mydir1 mydir2 > changes.diff
Таким образом, мы сравниваем файлы, имена которых не попадают под шаблоны в файле excludeFiles, например, vasya.exe или ChangeLog12.
Добавим еще несколько опций, которые описаны выше, чтобы улучшить результат сравнения:
diff -rwBd -X excludeFiles mydir1 mydir2 > changes.diff
Мы сравниваем файлы в директориях mydir1 и mydir2, игнорируя изменения, связанные с добавлением пустых строк, пробелов, табуляции, а также используем шаблоны имен файлов в excludeFiles, чтобы исключить из сравнения ненужные файлы.
Заключение
Дополнительную информацию по использованию команды diff в вашей системе Linux вы можете получить, выполнив команду:
man diff
Также существуют программы, которые позволяют сравнивать файлы, используя графический интерфейс. Например, программа Meld, которая в наглядном виде показывает где и что изменилось в файлах.
Источник: pingvinus.ru
Еще о Сравнение файлов в Linux (команда diff)
Meld
Meld — очень полезная программа для наглядного сравнения файлов и катологов в Linux. Это что-то вроде утилиты diff, но в графическом виде с возможностью «сливать» изменения,
Несколько полезных команд Linux
Хочу рассказать о некоторых командах Linux, которыми иногда приходится пользоваться для решения небольших задач. Как сделать файл исполняемым chmod +x myfile Данная команда сделает
Включаем модуль Mod rewrite в Apache
Модуль Mod rewrite используется для преобразования URL на основе правил. В статье рассказывается, как включить поддержку модуля Mod rewrite в
Команда find: широкие возможности для поиска файлов в Linux
В Linux есть очень мощная и полезная команда для поиска файлов — команда find. Она обладает большим количеством возможностей для поиска файлов, однако,
Dropbox
Dropbox — это очень полезная программа для Linux, с помощью которой можно с легкостью синхронизировать файлы между компьютерами. Программа создает на вашем компьютере специальную папку.
