Перейти к содержимому

diff — сравнение файлов и папок в Linux

Команда diff используется для сравнения нескольких файлов. Данная утилита умеет сравнивать не только файлы но и папки.

Синтаксис команды diff

diff [опция] имя_файла_1 имя_файла_2

Опции команды diff

ОпцияЗначение
-q, —briefВыводит только различия файлов.
-sВыводит различия только при полном совпадении файлов.
-c, -CВыводит количество совпадающих строк.
-u, -UВыводит количество отличающихся строк.
-y, —side-by-sideВыводит содержимое в столбцах для сравнения «бок о бок».
-l, —paginateПостраничный вывод с поддержкой перелистывания.
-r, —recursiveРекурсивное сравнение всех файлов в подкаталогах.
-i, —ignore-caseИгнорировать регистр символов.
-b, —ignore-space-changeИгнорировать изменения в изменении пробелов.
-w, —ignore-all-spaceИгнорировать все пробелы.
-B, —ignore-blank-linesИгнорировать пустые строки.
-Z, —ignore-trailing-spaceИгнорировать пробелы в конце строк.

Инструкции при выводе команды

ИнструкцияЗначение
aДобавление строки.
dУдаление строки.
сИзменение строки.

Пример использование команды diff

Сравнение файлов

Для сравнения создадим два файла 1.txt и 2.txt

Содержимое файла 1.txt

1
2
3
4
5

Содержимое файла 2.txt

1
2
3
4
5
test1
test2

Выполнив команду сравнения diff 1.txt 2.txt мы получим следующий вывод

[[email protected] ~]$ diff 1.txt 2.txt
5a,6,7
> test1

> test2

Первая строка в выводе 5a,6,7 говорит о том, что после строки 5 оригинального файла 1.txt по сравнению с 2.txt были добавлены строки 6 и 7 со значениями test1 и test2 . На это указывает инструкция a .

Сравнение папок

Создадим две папки dir1 и dir2 в которых будут следующие файлы

[[email protected] ~]$ ls dir1
1.txt  test2.txt  test.txt
[[email protected] ~]$ ls dir2
1.txt  test5.txt

Выполним команду для сравнения содержимого папок diff dir1 dir2 и получим следующий результат

[[email protected] ~]$ diff dir1 dir2
Only in dir1: test2.txt
Only in dir2: test5.txt
Only in dir1: test.txt

В выводе команды мы получаем информация о том, что в файлы test.txt и test2.txt находится только в папке dir1 , а файл test5.txt у нас находится только в папке dir2

Более подробную информацию о команде diff вы можете получить выполним в системе

man diff