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

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