Linux and Unix diff command

Quick links

About diff
Related commands
Linux and Unix main page

About diff

Displays two files and prints the lines that are different.


diff [OPTION]... FILES


--normal output a normal diff (This is the default).
-q, --brief report only when files differ.
-s, --report-identical-files report when two files are the same.
-c, -C NUM, --context[=NUM] output NUM (default 3) lines of copied context.
-u, -U NUM, --unified[=NUM] output NUM (default 3) lines of unified context.
-e, --ed output an ed script.
-n, --rcs output an RCS-format diff.
-y, --side-by-side output in two columns.
-W, --width=NUM output at most NUM (default 130) print columns.
--left-column output only the left column of common lines.
--suppress-common-lines do not output common lines.
-p, --show-c-function show which C function each change is in.
-F, --show-function-line=RE show the most recent line matching RE.
--label LABEL use LABEL instead of file name (this option can be repeated).
-t, --expand-tabs expand tabs to spaces in output.
-T, --initial-tab make tabs line up by prepending a tab.
--tabsize=NUM tab stops every NUM (default 8) print columns.
--suppress-blank-empty suppress space or tab before empty output lines.
-l, --paginate pass output through pr to paginate it
-r, --recursive recursively compare any subdirectories found.
-N, --new-file treat absent files as empty.
--unidirectional-new-file treat absent first files as empty.
--ignore-file-name-case ignore case when comparing file names.
--no-ignore-file-name-case consider case when comparing file names.
-x, --exclude=PAT exclude files that match PAT.
-X, --exclude-from=FILE exclude files that match any pattern in FILE.
-S, --starting-file=FILE start with FILE when comparing directories.
--from-file=FILE1 compare FILE1 to all operands; FILE1 can be a directory.
--to-file=FILE2 compare all operands to FILE2; FILE2 can be a directory.
-i, --ignore-case ignore case differences in file contents.
-E, --ignore-tab-expansion ignore changes due to tab expansion.
-b, --ignore-space-change ignore changes in the amount of white space.
-w, --ignore-all-space ignore all white space.
-B, --ignore-blank-lines ignore changes whose lines are all blank.
-I, --ignore-matching-lines=RE ignore changes whose lines all match RE.
-a, --text treat all files as text.
--strip-trailing-cr strip trailing carriage return on input.
-D, --ifdef=NAME output merged file with `#ifdef NAME' diffs.
--GTYPE-group-format=GFMT format GTYPE input groups with GFMT.
--line-format=LFMT format all input lines with LFMT.
--LTYPE-line-format=LFMT format LTYPE input lines with LFMT.

These format options provide fine-grained control over the output of diff, generalizing -D/--ifdef.

LTYPE is 'old', 'new', or 'unchanged'. GTYPE is LTYPE or `changed'.

GFMT (only) may contain:

%<: lines from FILE1

%>: lines from FILE2

%=: lines common to FILE1 and FILE2.

%[-][WIDTH][.[PREC]]{doxX}LETTER: printf-style spec for LETTER

LETTERs are as follows for new group, lower case for old group:

F: first line number

L: last line number

N: number of lines = L-F+1

E: F-1

M: L+1

%(A=B?T:E): if A equals B then T else E

LFMT (only) may contain:

%L: contents of line

%l: contents of line, excluding any trailing newline

%[-][WIDTH][.[PREC]]{doxX}n: printf-style spec for input line number

Both GFMT and LFMT may contain:

%%: A literal '%'

%c'C': the single character C %c'\OOO': the character with octal code OOOC: the character C (other characters represent themselves)
-d, --minimal try hard to find a smaller set of changes.
--horizon-lines=NUM keep NUM lines of the common prefix and suffix.
--speed-large-files assume large files and many scattered small changes.
--help display a help message and exit.
-v, --version output version information and exit.

FILES are 'FILE1 FILE2' or 'DIR1 DIR2' or 'DIR FILE...' or 'FILE... DIR'. If --from-file or --to-file is given, there are no restrictions on FILE(s). If a FILE is '-', diff reads from standard input. Exit status is 0 if inputs are the same, 1 if different, 2 if diff encounters any trouble.


diff help dir2

Compares the directory named help with the directory named dir2. Below is an example of the output when running this command:

Only in help: tab2.gif
Only in help: tab3.gif
Only in help: tab4.gif
Only in help: tape.htm
Only in help: tbernoul.htm
Only in help: tconner.htm
Only in help: tempbus.psd

Related commands