File comparison plays an important role in Linux, especially for programmers and Linux system administrators. For example, if you want to find the difference between two source code files to develop patches, then you need a file comparison tool to make this process easier. There are several command-line tools available in Linux to compare two files. Among them, diff is a very popular command-line utility that provides various options to get the difference between two files.
In this post, we will show you how to compare two files in a Linux terminal.
Basic Syntax
The basic syntax of the diff command is shown below:
diff [OPTION] FILES
A brief explanation of each option is shown below:
- -s Report when two files are the same
- -c Display output in context mode
- -q Report only when files differ
- -y Shows difference output in two columns
- -r Recursively compare any subdirectories
- -i Ignore case differences in file contents
- -w Ignores all white space
- –ignore-file-name-case Ignore case when comparing file names
- –no-ignore-file-name-case Consider a case when comparing file names
Also Read
How to Download File Using Wget in Linux
Create Files in Linux
To perform file comparison in Linux, you will need to create some files in your system.
Let’s create a first file named file1.txt:
nano file1.txt
Add the following contents:
11 12 13 14 15 16 17 18 19 eveven twelve thirteen fourteen fifteen sixteen seventeen eighteen ninteen In this file, we added some numbers in text and numerix form Atlantic Cloud
Let’s create a second file named file2.txt:
nano file2.txt
Add the following contents:
10 12 3 14 8 16 7 18 19 five twelve eight fourteen fifteen nine seventeen one ninteen In this file, we added some numbers in text and numerix form Atlantic Cloud
Let’s create a third file named file3.txt with content similar to file1.txt:
nano file3.txt
Add the following contents:
11 12 13 14 15 16 17 18 19 eveven twelve thirteen fourteen fifteen sixteen seventeen eighteen ninteen In this file, we added some numbers in text and numerix form Atlantic Cloud
Also Read
How to Install and Use Ack Command in Linux
Print Differences Between Two Files
At this point, three files are ready for practical use with the diff command.
Now, to print the differences between two files named file1.txt and file2.txt, run:
diff file1.txt file2.txt
You will get the following output:
1,2c1,2 < 11 12 13 14 15 16 17 18 19 < eveven twelve thirteen fourteen fifteen sixteen seventeen eighteen ninteen --- > 10 12 3 14 8 16 7 18 19 > five twelve eight fourteen fifteen nine seventeen one ninteen
As you can see, the diff command has omitted all the similarities between the two files and only displayed their differences.
If you want to display output in context mode, use the -c option:
diff -c file1.txt file2.txt
You will get the following output:
*** file1.txt 2022-03-30 16:00:02.639907838 +0530 --- file2.txt 2022-03-30 16:00:23.588174892 +0530 *************** *** 1,4 **** ! 11 12 13 14 15 16 17 18 19 ! eveven twelve thirteen fourteen fifteen sixteen seventeen eighteen ninteen In this file, we added some numbers in text and numerix form Atlantic Cloud --- 1,4 ---- ! 10 12 3 14 8 16 7 18 19 ! five twelve eight fourteen fifteen nine seventeen one ninteen In this file, we added some numbers in text and numerix form Atlantic Cloud
Find Similar Files Using Diff Command
You can use the -s flag with the diff command to check whether two files are similar.
Run the following command to compare the file1.txt and file3.txt:
diff -s file1.txt file3.txt
You should see the following output:
Files file1.txt and file3.txt are identical
Find Differ Files Using Diff Command
You can use the -q flag with the diff command to check whether two files differ.
Run the following command to compare the file1.txt and file2.txt:
diff -q file1.txt file2.txt
You should see the following output:
Files file1.txt and file2.txt differ
Display Output in side-by-side View
If you compare two files and want to display file differences in a side-by-side view, use the -y option.
diff -y file1.txt file2.txt
You should see the following output:
11 12 13 14 15 16 17 18 19 | 10 12 3 14 8 16 7 18 19 eveven twelve thirteen fourteen fifteen sixteen seventeen eig | five twelve eight fourteen fifteen nine seventeen one ninteen In this file, we added some numbers in text and numerix form In this file, we added some numbers in text and numerix form Atlantic Cloud Atlantic Cloud
If you want to ignore the similarities between the two files from the above output, run the following command:
diff -y --suppress-common-lines file1.txt file2.txt
You should see the following output:
11 12 13 14 15 16 17 18 19 | 10 12 3 14 8 16 7 18 19 eveven twelve thirteen fourteen fifteen sixteen seventeen eig | five twelve eight fourteen fifteen nine seventeen one ninteen
Conclusion
In this post, we explained how to compare two files in Linux using the diff command. We also demonstrated several use cases to explain how to use the diff command in different conditions. Try it on VPS hosting from Atlantic.Net!