NAME

diff - compare files line by line

SYNOPSIS

diff [OPTION]... FILES

DESCRIPTION

Compare FILES line by line.

Mandatory arguments to long options are mandatory for short options too.

--normal

output a normal diff (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 and timestamp (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

--no-dereference

don't follow symbolic links

-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

-Z, --ignore-trailing-space

ignore white space at line end

-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 where lines are all blank

-I, --ignore-matching-lines=RE

ignore changes where all lines 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:

%%

%

%c'C'

the single character C

%c'\OOO'

the character with octal code OOO

C

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

--color[=WHEN]

color output; WHEN is 'never', 'always', or 'auto'; plain --color means --color='auto'

--palette=PALETTE

the colors to use when --color is active; PALETTE is a colon-separated list of terminfo capabilities

--help

display this help 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 '-', read standard input. Exit status is 0 if inputs are the same, 1 if different, 2 if trouble.

AUTHOR

Written by Paul Eggert, Mike Haertel, David Hayes, Richard Stallman, and Len Tower.

REPORTING BUGS

Report bugs to: bug-diffutils@gnu.org
GNU diffutils home page: <https://www.gnu.org/software/diffutils/>
General help using GNU software: <https://www.gnu.org/gethelp/>

COPYRIGHT

Copyright © 2023 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law.

SEE ALSO

wdiff(1), cmp(1), diff3(1), sdiff(1), patch(1)

The full documentation for diff is maintained as a Texinfo manual. If the info and diff programs are properly installed at your site, the command

info diff

should give you access to the complete manual.