Skip to content
FLAVIO COPES
flaviocopes.com
2026

Linux commands: diff

By Flavio Copes

Learn how the Linux diff command compares two files or directories line by line, with -y for a side-by-side view and -u for the unified format Git uses.

~~~

diff is a handy command. Suppose you have 2 files, which contain almost the same information, but you can’t find the difference between the two.

diff will process the files and will tell you what’s the difference.

Suppose you have 2 files: dogs.txt and moredogs.txt. The difference is that moredogs.txt contains one more dog name:

Terminal showing cat dogs.txt with Roger and Syd, then cat moredogs.txt with Roger, Syd, and Vanille

diff dogs.txt moredogs.txt will tell you the second file has one more line, line 3 with the line Vanille:

Terminal output showing diff dogs.txt moredogs.txt with 2a3 > Vanille indicating line 3 was added

If you invert the order of the files, it will tell you that the second file is missing line 3, whose content is Vanille:

Terminal output showing diff moredogs.txt dogs.txt with 3d2 < Vanille indicating line 3 was deleted

Using the -y option will compare the 2 files line by line:

Terminal showing diff -y dogs.txt moredogs.txt with side-by-side comparison showing Vanille only in right column

The -u option however will be more familiar to you, because that’s the same used by the Git version control system to display differences between versions:

Terminal showing diff -u output with unified format displaying file headers, timestamps, and +Vanille addition

Comparing directories works in the same way. You must use the -r option to compare recursively (going into subdirectories):

Terminal showing ls dir1 and dir2 both containing dogs.txt, then diff -u dir1 dir2 showing unified format comparison

In case you’re interested in which files differ, rather than the content, use the r and q options:

Terminal showing diff -rq dir1 dir2 output: Files dir1/dogs.txt and dir2/dogs.txt differ

There are many more options you can explore in the man page running man diff:

Terminal showing man diff page with command description, synopsis, and various options like ignore-case, ignore-file-name-case

The diff command works on Linux, macOS, WSL, and anywhere you have a UNIX environment

~~~

Related posts about cli: