# diff - compare files line by line - man(1) - [phpMan]

> **TLDR:** Compare files and directories.
>
- Compare files (lists changes to turn `old_file` into `new_file`):
  `diff {{path/to/old_file}} {{path/to/new_file}}`
- Compare files, ignoring white spaces:
  `diff {{-w|--ignore-all-space}} {{path/to/old_file}} {{path/to/new_file}}`
- Compare files, showing the differences side by side:
  `diff {{-y|--side-by-side}} {{path/to/old_file}} {{path/to/new_file}}`
- Compare files, showing the differences in unified format (as used by `git diff`):
  `diff {{-u|--unified}} {{path/to/old_file}} {{path/to/new_file}}`
- Compare directories recursively (shows names for differing files/directories as well as changes made to files):
  `diff {{-r|--recursive}} {{path/to/old_directory}} {{path/to/new_directory}}`
- Compare directories, only showing the names of files that differ:
  `diff {{-r|--recursive}} {{-q|--brief}} {{path/to/old_directory}} {{path/to/new_directory}}`
- Create a patch file for Git from the differences of two text files, treating nonexistent files as empty:
  `diff {{-a|--text}} {{-u|--unified}} {{-N|--new-file}} {{path/to/old_file}} {{path/to/new_file}} > {{path/to/diff.patch}}`
- Compare files, showing output in color, trying hard to find the smallest set of changes:
  `diff {{-d|--minimal}} --color=always {{path/to/old_file}} {{path/to/new_file}}`

*Source: tldr-pages*

---

[_DIFF_(1)](https://www.chedong.com/phpMan.php/man/DIFF/1/markdown)                                     User Commands                                    [_DIFF_(1)](https://www.chedong.com/phpMan.php/man/DIFF/1/markdown)

## 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  --context
              output NUM (default 3) lines of copied context

### -u -U  --unified
              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
              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
              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
              exclude files that match PAT

### -X --exclude-from
              exclude files that match any pattern in FILE

### -S --starting-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
              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
              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 ter‐
              minfo 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)](https://www.chedong.com/phpMan.php/man/wdiff/1/markdown), [**cmp**(1)](https://www.chedong.com/phpMan.php/man/cmp/1/markdown), [**diff3**(1)](https://www.chedong.com/phpMan.php/man/diff3/1/markdown), [**sdiff**(1)](https://www.chedong.com/phpMan.php/man/sdiff/1/markdown), [**patch**(1)](https://www.chedong.com/phpMan.php/man/patch/1/markdown)

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

              **info diff**

       should give you access to the complete manual.

diffutils 3.10                                May 2023                                       [_DIFF_(1)](https://www.chedong.com/phpMan.php/man/DIFF/1/markdown)
