Команда diff позволяет сравнивать два или несколько файлов или каталого Linux. Рассмотрим синтаксис команды, её опции и примеры использования.
Содержание
Синтаксис
Команда diff
имеет следующий синтаксис:
diff [опции] файлы или каталоги
После указания опций на вход подаётся два или более файлов или каталогов, после чего происходит их сравнение.
Основные опции
- -q
- Напечатать только различаются ли файлы.
- -E
- Игнорировать изменения, связанные с добавлением символа табуляции в тексте.
- -b
- Игнорировать изменения, связанные с добавлением пробелов.
- -w
- Игнорировать изменения, связанные с добавлением пробелов и табуляции.
- -B
- Игнорировать новые пустые строки.
- -r
- Просматривать каталоги рекурсивно.
- -X exclude
- Исключить из поиска файлы, имена которых совпадают с шаблонами в файле
exclude
. - -d
- Исключить ложные срабатывания (пытаться найти наименьший набор изменений).
Примеры использования
Сравнение двух текстовых файлов
Для простого сравнения двух текстовых файлов с именами file1
и file2
следует выполнить в терминале следующую команду:
diff file1 file2
Вывод удобно перенаправить в файл с расширением diff
. Для этого используется символ перенаправления потока (>
):
diff file1 file2 > changes.diff
Сравнение каталогов, содержащих текстовые файлы
При сравнении двух каталогов (dir1
и dir2
, содержащих текстовые файлы к команде добавляется опция -r
. Эта опция позволяет выполнять рекурсивный обход файлов в каталогах:
diff -r dir1 dir2 > changes.diff
При наличии в каталогах значительного количества файлов, которые нет необходимости сравнивать, создается отдельный файл с шаблонами (exclude
). Содержимое файла может выглядеть примерно так:
Masyanya.exe
*.bak
*.bz2
*.so
Команде даётся указание использования файла exclude
при сравнении каталогов:
diff -r -X exclude dir1 dir2 > changes.diff
Для улучшения результата сравнения можно добавить ещё несколько опций:
diff -rwBd -X exclude dir1 dir2 > changes.diff
Дополнительные опции позволяют сравнивать файлы в каталогах dir1
и dir2
, игнорируя изменения, связанные с добавлением к шаблонам имен файлов из файла exclude
, а также пустых строк, пробелов, табуляции.
Заключение
Таким образом, использование команды diff
в Linux не представляет большой сложности для начинающего пользователя. Она позволяет быстро и просто получить качественный результат сравнения файлов или каталогов.
Дополнительную информацию можно получить, выполнив команду:
diff --help
Для пользователей, тяготеющих к графическому интерфейсу, создана программа Meld. Она позволяет наглядно увидеть изменения в файлах.