Команда 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. Она позволяет наглядно увидеть изменения в файлах.