diff - compare files line by line
| Use Case | Command | Description |
|---|---|---|
| Compare two files | diff file1 file2 | đ Show line-by-line differences |
| Compare directories recursively | diff -r dir1 dir2 | đ Compare all files in subdirectories |
| Unified diff (compact) | diff -u file1 file2 | đ Show differences with context (default 3 lines) |
| Context diff | diff -c file1 file2 | đ Show differences with context in separate sections |
| Ignore whitespace | diff -w file1 file2 | đ Ignore all whitespace differences |
| Side-by-side output | diff -y file1 file2 | đ Show two columns |
| Brief check (different or same) | diff -q file1 file2 | đ Report only whether files differ |
| Ignore case | diff -i file1 file2 | đ¤ Ignore case differences |
| Show C function context | diff -p file1 file2 | đ§ Show which function each change belongs to |
| Ed script output | diff -e file1 file2 | đ Generate ed commands to patch |
diff [OPTION]... FILES
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 LFMTThese 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 exitFILES 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.
Written by Paul Eggert, Mike Haertel, David Hayes, Richard Stallman, and Len Tower.
Report bugs to: bug-diffutils AT gnu.org
GNU diffutils home page: <https://www.gnu.org/software/diffutils/>
General help using GNU software: <https://www.gnu.org/gethelp/>
Copyright Š 2021 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.
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.
Generated by phpman v4.9.26-5-g7740029 · Markdown · JSON · MCP Author: Che Dong Under GNU General Public License
2026-08-22 02:06 @216.73.216.206
CrawledBy Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)