Linux: Compare Files or Directory: diff
Compare Binary Files
How to tell if 2 binary files have identical content?
cmp filename1 filename2
If 2 files have same content, there's no output. Else it'll print the first byte count that's different.
Sample output:
file1 file2 differ: byte 174, line 4
Compare Text Files
How to compare 2 text files's differences?
diff file1 file2
Most useful options of diff
:
-i
or--ignore-case
-E
or--ignore-tab-expansion
-b
or--ignore-space-change
-w
or--ignore-all-space
-B
or--ignore-blank-lines
--strip-trailing-cr
Compare Directories
How to check if 2 directories are the same? (same files and subdirs)
# compare 2 directories, show only missing files/dir diff -r --brief ~/dir1 ~/dir2
The “-r” means recurvise (all subdirs), and the “--brief” means only output if files differ (as opposed to how they differ) or non-existant.
Color Diff
diff
doesn't have color option. But you can use colordiff
. It's a wrapper to diff, but added color.
# install color diff sudo apt-get install colordiff
Using Git for Diff

# diff files using git, ignore git index (staged) file git diff --color --no-index file1 file2
If the files are outside any git repository, then --no-index
is not necessary. You can also set git to use color always.
Advantages of using git diff:
- Gives unified diff result by default. (in GNU diff, you have to use the option
-u
.) - Has color option
--color
. - Color option can be turned on in a config file.
git config --global color.ui true
- By default, it output one page at a time. (if you don't want paging, you can add
git --no-pager
)
See also: Git: Diff Between {Working Dir, Staged Area, Last Commit}
2013-06-14 big thanks to Yuri Khan on using git diff.