Linux: Compare Files or Directory: diff
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, example:
file1 file2 differ: byte 174, line 4
How to compare 2 text files's differences?
diff ~/myfile1 ~/myfile2
Most useful options of
How to check if 2 directories are the same? (same files and subdirs)
# compare 2 directories, show only missing files/dir diff -r --brief ~/mydir1 ~/mydir2
The “-r” means recurvise (all subdirs), and the “--brief” means only output if files differ (as opposed to how they differ) or non-existant.
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
- Has color option
- 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. (you don't have to do
… | less. But if you don't want paging, you can add
git --no-pageror pipe to cat
… | cat)
big thanks to Yuri Khan https://plus.google.com/109564459582005085765/posts on using git diff.
Ask me question on patreon