ryg

Команда diff -сравнить файлы построчно

Синтаксис:

 diff [OPTION]... FILES

Описание:

Утилита diff сравнивает два указанных в параметрах файла построчно и выводит отличия между ними в окно стандартного вывода.

Параметры:

-i  --ignore-case Не учитывать при сравнении регистр символов.
  --ignore-file-name-case Не учитывать регистр при сравнении имен файлов.
  --no-ignore-file-name-case Учитывать регистр при сравнении имен файлов.
-E --ignore-tab-expansion Игнорировать расхождения в символах табуляции.
-b --ignore-space-change Не учитывать расхождения в количестве пробелов.
-w --ignore-all-space Игнорировать все пробелы.
-B --ignore-blank-lines  Пропускать пустые строки.
-I RE --ignore-matching-lines=RE Ignore changes whose lines all match RE.
  --strip-trailing-cr Удалять "перевод каретки" при вводе.
-a --text Все файлы рассматриваются как текстовые.
-c
-C NUM
--context[=NUM] В случае обнаружения расхождений выводить NUM (по умолчанию 3) соседних строк с различными из каждого файла.
-u  
-U NUM
--unified[=NUM] В случае обнаружения расхождений выводить отличающиеся строки и NUM (по умолчанию 3) совпадающих.
  --label LABEL Use LABEL instead of file name.
-p --show-c-function При сравнении файлов на языке "C" выводить отличающиеся функции.
-F RE --show-function-line=RE Show the most recent line matching RE.
-q --brief Краткий отчет. Выводит только сообщение, что файлы имеют отличия.
-e --ed Выводить как ed скрипт.
  --normal Стандартный вывод расхождений между файлами.
-n --rcs Выводить результаты в формате RCF.
 -y --side-by-side Выводить результат в две колонки. Отличающиеся строки помечаются вертикальной чертой "|".
-W NUM --width=NUM Ограничить вывод результатов NUM - колонок (по умолчанию 130).
  --left-column При двухколоночном выводе, совпадающие строки будут показаны только в левой колонке.
  --suppress-common-lines Не выводить одинаковые строки.
-D NAME --ifdef=NAME

В случае нахождения отличающихся строк создает следующую конструкцию в результирующем файле:

#ifdef NAME
строка из первого файла
#else /* NAME */

строка из второго файла
#endif /* NAME */

  --GTYPE-group-format=GFMT Формат вводных групп GTYPE в виде GFMT
  --line-format=LFMT Аналогично, но формат всех вводных строк LFMT
  --LTYPE-line-format=LFMT

Аналогично, но формат вводных строк LFMT
LTYPE может быть 'old', 'new' или 'unchanged'
GTYPE может быть как LTYPE или 'changed'
GFMT может содержать:

%< строки из FILE1
%> строки из FILE2
%= одинаковые строки
%[-][WIDTH][.[PREC]]{doxX}LETTER  стиль printf определяемый LETTER

LETTER может быть (заглавными новая группа, строчными старая группа):

F номер первой строки
L номер последней строки
N количество строк L-F+1
E F-1
M L+1

LFMT может содержать:

 %L   Содержимое строки
 %l    Содержимое строки, исключая все символы новой строки
 %[-][WIDTH][.[PREC]]{doxX}n
              стиль printf для номера строки

И GFMT и LFMT могут содержать:

%%         %
%c'C'       одиночный символ 'C'
%c'\000'   символ, заданный восьмеричным кодом 000

-l --paginate Выводить результат постранично (для печати).
-t --expand-tabs

При выводе результатов преобразовать символы табуляции в пробелы.

-T --initial-tab Выровнять выводимые строки, поставив в начало строки символ табуляции.
-r --recursive Рекурсивное сравнение всех найденных папок.
-N --new-file Если файл для сравнения не существует, то создать его.
  --unidirectional-new-file Если первый файл для сравнения не существует, то создать его.
-s --report-identical-files Сообщить если два файла полностью совпадают.
-x PAT --exclude=PAT Исключить из сравнения файлы соответствующие PAT.
-X FILE --exclude-from=FILE Исключить из сравнения файлы, которые соответствуют шаблону FILE.
-S FILE --starting-file=FILE Когда сравниваются папки, начинать сравнение с файла FILE.
  --from-file=FILE1 Сравнивать FILE1 со всеми остальными. FILE1 может быть папкой.
  --to-file=FILE2 Сравнивать все файлы с FILE2. FILE2 может быть папкой.
  --horizon-lines=NUM Пропустить NUM строк.
-d --minimal Искать минимальные отличия.
  --speed-large-files Обработка больших файлов с большим количеством маленьких отличий.
  --version Вывести информацию о версии утилиты diff для Mac OS X.
  --help Вывести подсказку по параметрам утилиты.

Примеры:

Сравнить два файла

diff file1 file2

Сравнить два каталога с подкаталогами и вывести список отличающихся файлов в mac os x 

diff -rq folder1 folder2

 

Близкие команды:

cmp       Сравнить два файла побайтно
diff3       Сравнить три файла построчно
patch     Apply a diff file to an original.
sdiff       Сравнить два файла и показать различия в двухколоночном варианте.
printf     Отформатировать и напечатать значения