diff - display differences between two files (or directories)
diff [options] old-file new-file
Use - to read from standard input.
diff directory file
Compares the corresponding file in directory . The non-directory file must not be - .
diff directory directory
Compares corresponding files in both directories, in alphabetical order.
This comparison is not recursive unless the -r or ‑‑recursive option is given.
diff never compares the actual contents of a directory as if it were a
file. The file that is fully specified may not be standard input,
because standard input is nameless and the notion of "file with the same name" does not apply.
Use -- to terminate options when specifing file names which begin with a -.
Multiple single letter options can be combined (example: ‑wyW50)
| options to ignore "insignificant" differences
|
|---|
-i
--ignore-case |
|
-B
--ignore-blank-lines | Ignore differences that just insert or delete Blank lines.
|
-b
--ignore-space-change | Ignore differences in amount of blanks.
|
-w
--ignore-all-space | Ignore white space when comparing lines.
|
-I regexp
--ignore-matching-lines= regexp
Ignore differences that just insert or delete lines that match regexp.
| | Option affecting amount of output
|
|---|
-q
--brief | quite Do not show differences.
Only whether the files differ, not the details of the differences.
Display "Files old-file and new-file differ" or nothing if the files are the same.
See cmp for "quiter".
Check the return code $?
if [ $? -gt 0 ]; then
echo -n $'\a '
fi
| -t --expand-tabs | to spaces in the output, preserves the alignment of tabs in the input files.
| -T --initial-tab | Output a Tab rather than a space before the text of a line in normal or context format, causes the alignment to look normal.
| |
--side-by-side
-y
diff -y dfdf dfdf_1
Avail Mounted Avail Mounted
695M / 695M /
170M /Volumes/DATA 170M /Volumes/DATA
56K /Volumes/BACKUP_2 56K /Volumes/BACKUP_2
919M /Volumes/TBD | 898M /Volumes/TBD
xxxx xxxx
-W columns --width=columns
diff -W70 --side-by-side dfdf dfdf_1
Avail Mounted Avail Mounted
695M / 695M /
170M /Volumes/DATA 170M /Volumes/DATA
56K /Volumes/BACKUP_2 56K /Volumes/BACKUP_2
919M /Volumes/TBD | 898M /Volumes/TBD
xxxx xxxx
--suppress-common-lines
diff -wyW$COLUMNS --su dfdf dfdf_1
diff -yW50 --suppress dfdf dfdf_1
919M /Volumes/TBD | 898M /Volumes/TBD
--leftcolumn only
diff -yW60 --left dfdf dfdf_1
Avail Mounted (
695M / (
170M /Volumes/DATA (
56K /Volumes/BACKUP_2 (
919M /Volumes/TBD | 898M /Volumes/TBD
xxxx (
|
When comparing directories:
|
-s --report-identical-files | Report are identical when files are the same, otherwise no output is produced.
|
-x pattern
--exclude=pattern | ignore files and subdirectories whose basenames match pattern.
|
--exclude-from=file
| ignore files and subdirectories whose basenames match any pattern in file.
|
-X file | ignore files and subdirectories whose basenames match any pattern contained in file.
|
-r --recursive | compare subdirectories .
|
-N --new-file | a file found in only in one directory is compared to an empty file.
|
-P --unidirectional-new-file | a file occuring only in the second directory id compared to an empty file.
|
-S file
--starting-file=file
| start with the file file. Use for resuming an aborted comparison.
|
--horizon-lines=lines | Do not discard the last lines lines of the common prefix and the first lines lines of the common suffix.
|
--from-file= file | Compare file to all operands. file can be a directory.
|
--to-file= file | Compare all operands to file. file can be a directory.
|
-l --paginate | Pass the output through pr to paginate it.
|
-a --text | Treat all files as ASCII text and compare them line-by-line, even if they do not seem to be text.
|
-v
--version
|
|
Show the differences with some lines before and after the differences.
-c Use the context output format
-C lines --context=lines. Show lines of context. Default 3. diff -c dfdf1 dfdf2
*** dfdf1 Tue Sep 5 18:10:15 2006 ← mod date of file prefixed with stars
--- dfdf2 Tue Sep 5 18:10:24 2006
*************** ← seperator
*** 4,7 **** ← position (column,line) where difference starts in dfdf1
1.3G /Volumes/PHOTOS_1
2.7G /Volumes/PHOTOS_2
56K /Volumes/BACKUP_2
! 919M /Volumes/TBD
↖ position where difference starts
----4,7 ---- ← position (column,line) where difference starts in dfdf2
1.3G /Volumes/PHOTOS_1
2.7G /Volumes/PHOTOS_2
56K /Volumes/BACKUP_2
! 898M /Volumes/TBD
-e --ed Make output that is a valid ed script.
7c
898M /Volumes/TBD
.
-f --forward-ed Make output that looks vaguely like an ed script but has changes in the order they appear in the file.
diff -f dfdf dfdf_1
c7
898M /Volumes/TBD
.
-F regexp
In context and unified format for each hunk of differences, show some of the last preceding line that matches regexp.
-n --rcs Output RCS-format(Revision Control Systems) diffs; like -f except that each command specifies the number of lines affected.
diff -n dfdf dfdf_1
d7 1
a7 1
898M /Volumes/TBD
-L label --label=label
Use label instead of the file name in the context and unified format headers.
-D name --ifdef=name Make merged if-then-else format output, conditional on the preprocessor macro name.
--line-format=format Use format to output all input lines in in-then-else format.
%L contents of line %l , excluding any trailing newline
%[-]*[width][.[prec*{doxX}*n printf-style spec for input line number
%% the % character
x the single character x (i.e. any character)
%c'\OOO' the character with octal code OOO
diff --line-format="%8dn %L" dfdf dfdf_1
1 Avail Mounted
2 695M /
3 170M /Volumes/DATA
4 1.3G /Volumes/PHOTOS_1
5 2.7G /Volumes/PHOTOS_2
6 56K /Volumes/BACKUP_2
7 919M /Volumes/TBD
7 898M /Volumes/TBD
8 xxxx |
--old-line-format=format... a line taken from just the first file
--new-line-format=format ...a line taken from just the second file
--unchanged-line-format=format ... a line common to both files
% lines from FILE1
%> lines from FILE2
%= lines common to FILE1 and FILE2
%% %
%c'C' the single character C
%c'\OOO' the character with octal code OOO
%[-][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
--changed-group-format=format Use format to output a line group containing differing lines from both files
--old-group-format=format ... the first file
--new-group-format=format ...the second
--unchanged-group-format=format ... of common lines from both files
|
-u Use the unified output format.
-U lines --unified[=lines] Use the unified output format, showing lines of context. default 3.
#cat 0
Avail Mounted
10632 /
791 /Volumes/DATA
560 /Volumes/PHOTOS
3504 /Volumes/BACKUPS
4542 /Volumes/linux
934 /Volumes/SWAP
#cat 00
Avail Mounted
10639 /
791 /Volumes/DATA
560 /Volumes/PHOTOS
3504 /Volumes/BACKUPS
4542 /Volumes/linux
934 /Volumes/SWAP
| |
diff -u 0 00
--- 0 2007-01-14 21:07:11.000000000 -0500
+++ 00 2007-01-14 21:15:54.000000000 -0500
@@ -1,5 +1,5 @@
Avail Mounted
-10632 /
+10639 /
791 /Volumes/DATA
560 /Volumes/PHOTOS
3504 /Volumes/BACKUPS
|
-p
--show-c-function
| --show-function-line=regexp
In context and unified format, for each hunk of differences,
show some of the last preceding line that matches regexp.
| |
|
--sdiff-merge-assist
Print extra information to help sdiff. sdiff uses this option
when it runs diff. This option is not intended for users to use directly.
-d --minimal Change the algorithm to perhaps find a smaller set of changes.
slower (sometimes much slower).
-H
--speed-large-files Use Heuristics to speed handling of large files that have numerous scattered small changes.
See
cmp , comm, diff3(1), ed(1), patch(1), pr(1), sdiff(1).
DIAGNOSTICS exit status
0 no differences were found, 1 some differences were found, and 2 means trouble ( file not found/accessible,...).
|
cmp options file1 file2
-b --print-bytes output differing bytes.
file1 file2 differ: byte 1232, line 38 is 164† t‡ 163† s‡
| |
file1 |
file2
| | |
| -i SKIP --ignore-initial=SKIP Skip the first SKIP bytes of input.
| -i SKIP1:SKIP2 --ignore-initial=SKIP1:SKIP2
Skip the first SKIP1 bytes of FILE1 and
the first bytes of FILE2.
| -l --verbose Output byte numbers and values of all differing bytes.
| -n LIMIT --bytes=LIMIT Compare at most LIMIT bytes.
| -s --quiet --silent Output nothing; test the return value
| -v --version
| --help|
| | | | | | | | |
Return values: 0 - files are identical; 1 - files differ; 2 - inaccessible or missing argument
|
comm [OPTION]... FILE1 FILE2
Compare sorted files FILE1 and FILE2 line by line displaying lines in common.
With no options, produce three-column output.
first Column contains lines unique to FILE1,
second column contains lines unique to FILE2 and
last column contains lines common to both files.
-1 suppress lines unique to FILE1 (first column)
-2 suppress lines unique to FILE2 (secondcolumn)
-3 suppress lines that appear in both files (last column)
--help
--version output version information and exit
> cat 1
aaaaaaaaa
bbbbbbbb
ccccccc
> cat 2
aaaaaaaaa
b222bbbb
ccccccc
> comm 1 2
aaaaaaaaa
b222bbbb
bbbbbbbb
ccccccc
|
diff