diff(1)diff(1)NAMEdiff - differential file and directory comparator
n] name] dir1 dir2
n] name] file1 file2
string] file1 file2
If both arguments are directories, sorts the contents of the directo‐
ries by name, then runs the regular file algorithm (described below) on
text files that have the same name in each directory but are different.
Binary files that differ, common subdirectories, and files that appear
in only one directory are listed. When comparing directories, the fol‐
lowing options are recognized:
Long output format; each text file
is piped through to paginate it (see pr(1)). Other
differences are remembered and summarized after all
text file differences are reported.
Applies recursively to common subdirectories encountered.
reports files that are identical but otherwise not mentioned.
Starts a directory
in the middle of the sorted directory, beginning
with file name.
When run on regular files, and when comparing text files that differ
during directory comparison, tells what lines must be changed in the
files to bring them into agreement. usually finds a smallest suffi‐
cient set of file differences. However, it can be misled by lines con‐
taining very few characters or by other situations. If neither file1
nor file2 is a directory, either can be specified as in which case the
standard input is used. If file1 is a directory, a file in that direc‐
tory whose filename is the same as the filename of file2 is used (and
There are several options for output format. The default output format
contains lines resembling the following:
These lines resemble commands to convert file1 into file2. The numbers
after the letters pertain to file2. In fact, by exchanging for and
reading backwards one may ascertain equally how to convert file2 into
file1. As in identical pairs where n1=n2 or n3=n4 are abbreviated as a
Following each of these lines come all the lines that are affected in
the first file flagged by then all the lines that are affected in the
second file flagged by
Except for or which can be given with any of the others, the following
options are mutually exclusive:
Produce a script of
and commands for the editor suitable for recreating
file2 from file1. Extra commands are added to the out‐
put when comparing directories with so that the result
is a shell script for converting text files common to
the two directories from their state in dir1 to their
state in dir2.
Produce a script similar to that of the
option that is not useful with but is more readable by
Produce a script similar to that of
but in the opposite order, and with a count of changed
lines on each insert or delete command. This is the
form used by (see rcsdiff(1)).
Produce a difference list with 3 lines of context.
modifies the output format slightly: the output begins
with identification of the files involved, followed by
their creation dates, then each change separated by a
line containing about twelve asterisks Lines removed
from file1 are marked with and lines added to file2 are
marked Lines that change from one file to the other are
marked in both files with with Changes that lie within
3 lines of each other in the file are grouped together
Output format similar to
but with n lines of context.
Do a fast, half-hearted job.
This option works only when changed stretches are short
and well separated, but can be used on files of unlim‐
Create a merged version of
file1 and file2 on the standard output, with C pre‐
processor controls included so that a compilation of
the result without defining string is equivalent to
compiling file1, while compiling the result with string
defined is equivalent to compiling file2.
space characters, except newline character and treat
other string of blanks as equal. For example, and are
treated as equal.
space characters, except newline character. For exam‐
ple, and are treated as equal.
Ignores uppercase/lowercase differences.
Thus is treated the same as
Expand tabs in output lines.
Normal or output adds one or more characters to the
front of each line. Resulting misalignment of indenta‐
tion in the original source lines can make the output
listing difficult to interpret. This option preserves
original source file indentation.
determines the locale to use for the locale categories when both and
the corresponding environment variable (beginning with do not specify a
locale. If is not set or is set to the empty string, a default of "C"
(see lang(5)) is used.
determines the space characters for the command, and the interpretation
of text within file as single- and/or multi-byte characters.
determines the language in which messages are displayed.
If any internationalization variable contains an invalid setting, and
behave as if all internationalization variables are set to "C". See
International Code Set Support
Single- and multi-byte character code sets are supported with the
exception that and do not recognize multi-byte alternative space char‐
Upon completion, returns with one of the following exit values:
0 No differences were found.
1 Differences were found.
>1 An error occurred.
The following command creates a script file
is added to the end of the script in order to save the file:
The script file can then be used to create the file from the file using
the editor in the following manner:
The following command produces the difference output with 2 lines of
context information before and after the line that was different:
The following command ignores all blanks and tabs and ignores upper‐
Editing scripts produced by the or option are naive about creating
lines consisting of a single dot
When comparing directories with the or options specified, first com‐
pares the files in the same manner as then runs the algorithm if they
are not equal. This may cause a small amount of spurious output if the
files are identical except for insignificant blank strings or upper‐
The default algorithm requires memory allocation of roughly six times
the size of the file. If sufficient memory is not available for han‐
dling large files, the option or can be used (see bdiff(1)).
With other options if sufficient memory is not available, then either
the or values can be increased.
When run on directories with the option, recursively descends sub-
trees. When comparing deep multi-level directories, more memory may be
required than is currently available on the system. The amount of mem‐
ory required depends on the depth of recursion and the size of the
was developed by AT&T, the University of California, Berkeley, and HP.
used by option
SEE ALSObdiff(1), cmp(1), comm(1), diff3(1), diffmk(1), dircmp(1), ed(1),
more(1), nroff(1), rcsdiff(1), sccsdiff(1), sdiff(1), terminfo(4).