Find differences in files linux

Сравнение файлов в Linux

Иногда возникает необходимость сравнить несколько файлов между собой. Это может понадобиться при анализе разницы между несколькими версиями конфигурационного файла или просто для сравнения различных файлов. В Linux для этого есть несколько утилит, как для работы через терминал, так и в графическом интерфейсе.

В этой статье мы рассмотрим как выполняется сравнение файлов Linux. Разберем самые полезные способы, как для терминала, так и в графическом режиме. Сначала рассмотрим как выполнять сравнение файла linux с помощью утилиты diff.

Сравнение файлов diff

Утилита diff linux — это программа, которая работает в консольном режиме. Ее синтаксис очень прост. Вызовите утилиту, передайте нужные файлы, а также задайте опции, если это необходимо:

$ diff опции файл1 файл2

Можно передать больше двух файлов, если это нужно. Перед тем как перейти к примерам, давайте рассмотрим опции утилиты:

  • -q — выводить только отличия файлов;
  • -s — выводить только совпадающие части;
  • — выводить нужное количество строк после совпадений;
  • -u — выводить только нужное количество строк после отличий;
  • -y — выводить в две колонки;
  • -e — вывод в формате ed скрипта;
  • -n — вывод в формате RCS;
  • -a — сравнивать файлы как текстовые, даже если они не текстовые;
  • -t — заменить табуляции на пробелы в выводе;
  • -l — разделить на страницы и добавить поддержку листания;
  • -r — рекурсивное сравнение папок;
  • -i — игнорировать регистр;
  • -E — игнорировать изменения в табуляциях;
  • -Z — не учитывать пробелы в конце строки;
  • -b — не учитывать пробелы;
  • -B — не учитывать пустые строки.

Это были основные опции утилиты, теперь давайте рассмотрим как сравнить файлы Linux. В выводе утилиты кроме, непосредственно, отображения изменений, выводит строку в которой указывается в какой строчке и что было сделано. Для этого используются такие символы:

К тому же, линии, которые отличаются, будут обозначаться символом .

Вот содержимое наших тестовых файлов:

Теперь давайте выполним сравнение файлов diff:

В результате мы получим строчку: 2,3c2,4. Она означает, что строки 2 и 3 были изменены. Вы можете использовать опции для игнорирования регистра:

Можно сделать вывод в две колонки:

А с помощью опции -u вы можете создать патч, который потом может быть наложен на такой же файл другим пользователем:

Чтобы обработать несколько файлов в папке удобно использовать опцию -r:

Для удобства, вы можете перенаправить вывод утилиты сразу в файл:

diff -u file1 file2 > file.patch

Как видите, все очень просто. Но не очень удобно. Более приятно использовать графические инструменты.

Читайте также:  Ssd разметка для linux

Сравнение файлов Linux с помощью GUI

Существует несколько отличных инструментов для сравнения файлов в linux в графическом интерфейсе. Вы без труда разберетесь как их использовать. Давайте рассмотрим несколько из них:

1. Kompare

Kompare — это графическая утилита для работы с diff, которая позволяет находить отличия в файлах, а также объединять их. Написана на Qt и рассчитана в первую очередь на KDE. Кроме сравнения файлов утилита поддерживает сравнение каталогов и позволяет создавать и применять патчи к файлам.

2. Meld

Это легкий инструмент для сравнения и объединения файлов. Он позволяет сравнивать файлы, каталоги, а также выполнять функции системы контроля версий. Программа создана для разработчиков и позволяет сравнивать до трёх файлов. Можно сравнивать каталоги и автоматически объединять сравниваемые файлы. Кроме того поддерживаются такие системы контроля версий, как Git.

3. Diffuse

Diffuse — еще один популярный и достаточно простой инструмент для сравнения и слияния файлов. Он написан на Python 2. Поэтому в современных версиях Ubuntu программу будет сложно установить. Поддерживается две основные возможности — сравнение файлов и управление версиями. Вы можете редактировать файлы прямо во время просмотра.

4. KDiff3

KDiff3 — еще один отличный, свободный инструмент для сравнения файлов в окружении рабочего стола KDE. Он входит в набор программ KDevelop и работает на всех платформах, включая Windows и MacOS. Можно выполнить сравнение до трех файлов Linux или даже сравнить каталоги. Кроме того, есть поддержка слияния и ручного выравнивания.

5. TkDiff

Это очень простая утилита для сравнения файлов написанная на основе библиотеки tk. Она позволяет сравнивать только два файла, поддерживает поиск и редактирование сравниваемых файлов.

Выводы

В этой статье мы рассмотрели как выполняется сравнение файлов linux с помощью терминала, как создавать патчи, а также сделали небольшой обзор лучших графических утилит для сравнения файлов. А какие инструменты для сравнения используете вы? Напишите в комментариях!

Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.

Источник

How to Compare Two Files in Linux

If you want to compare two files and decipher the difference, a command called “diff” is used. This guide is focused on providing you the usage of the “diff” command with various options to get the difference between two files.

So, how does the “diff” command actually function? The “diff” command compares the two files and outputs a list of differences between both files. More precisely, it yields a list of modifications that require to be made in the first file to match the second file. The “diff” command is also used by the programmers to get the difference between two source code files to develop patches.

Before diving into the examples, note that the order of the files is very important. Because the “diff” command gives output based on the order of the files.

How to Use “diff” Command in Linux to Compare Files:

The syntax of the “diff” command is mentioned below:

Читайте также:  What is application server in linux

First, create two files. I am creating text files by the name of “test_file_1.txt” and “test_file_2.txt”. These files contain content with a slight difference:

Now use the following command to get the difference:

The standard output displayed the lines that match according to the order of the files mentioned in the command. So, let’s decode the output:

The comparison of the files is labeled, and each label has a number on either side. The format is as follows:

[Line number of file 1][Label(a,c,d)][Line number of file 2]

  • a – Add: Add content in the first file to synch with the second file.
  • c – Change: Indicates that a modification needed in the content of first file to match the second file.
  • d – Delete: Remove content from the first file to match with the second.

“2d1” indicates to delete line number 2 of the first file to match the second file from line number 1.

Similarly, “4c3” means making a change in the fourth line of the first file to match line number 3 of the second file as both lines are slightly different.

There is another method to view the difference, use the “diff” command with the “-y” option:

In the above output, the content of “test_file_1.txt” is displayed on the left side, while the content of “text_file_2.txt” is displayed on the right side. The difference is indicated by the symbols:

The “-W” indicates the width between the content of two files. To get separately and view the difference, use the following:

How to Get Output in One Line Using the “diff” Command:

If the labeled method is hard for you to decode, then there is a simpler approach. Using the “-q” option with the “diff” command gives you output in one line. Well, without any additional information, though:

If the files differ, then the above command will give an output. If the files are identical, then there will be no output. To demonstrate it, I am creating a copy of “test_file_1.txt” using:

A new file will be created by the name of “test_file_3.txt” containing the same content that “test_file_1.txt” has. Now, use:

Since both the files have similar content, therefore, there would be no output.

How to Check the Difference of Files in Context Mode Using the “diff” Command:

To get the comparison in context mode, the “-c” option will be used with the “diff” command:

To maintain the difference, the first file is indicated by “***” along with the date and time of the creation, while the second file is indicated by “—”.

The next line signifies a range of lines considered during comparison. For the first file, it is “***1,6****” and for the second file, it is “—1,5—-”:

The difference is indicated by the symbols:

  • + : Line is not present in the first file. Insert it in the first file or remove it from the second file to match both files.
  • – : The line exists in the first file but not in the second file. Try to insert it in the second file or remove it from the first to match both files.
  • ! : Line needs modification in order to match.
Читайте также:  Линукс свободное программное обеспечение

How to Check the Difference of Files in Unified Mode Using the “diff” Command:

The unified mode is quite similar to the context mode but without redundant information. The flag we use is “-u”:

In the output, the first file is indicated by “—” and the second by “+++”. The second line shows the number of lines considered for comparison in both files, then the content to be deleted, added, or modified with the symbols with them. There will be no symbol with similar lines in both files.

How to Ignore Case Sensitivity While Using the “diff” Command:

If you want to compare the files while ignoring the case sensitivity, then use the “-i” flag:

For demonstration, I have made the “D” of “Deepin” in the first file small:

As seen in the first command, the difference is indicated; while using “-i” that difference has been removed.

Some other useful options of the “diff” command are listed below:

Option Description
-a This option treats all the files as text files
-B It ignores modification where lines are all blank
-E This option ignores tab expansion
-I It ignores the changes where all lines match
-s Gives output when two files are identical
-w It ignores all white space
-Z It ignores white space at line end

How to Use Vim Editor to Compare Two Files:

Another method to compare two files is using the “vimdiff” command. For that, you need to have vim installed:

Now, to compare two files use:

Both files will be opened side by side. The portion that does not match will be highlighted:

How to Compare Two Files Using “colordiff”:

Another approach is a sort of extension of the “diff” command. You can make the comparison more identifiable by adding colors to it. To install use:

You can replace “diff” with “colordiff” to get the standard output of the “diff” command in colored format.

Conclusion:

To compare files in Linux and even in macOS, a utility used is called the “diff”. The “diff” utility compares two files and gives information about the differences between the two files. The developers primarily use the “diff” command to create patch files.

In this guide, we thoroughly discussed the “diff” command and how to use it to compare two files with different options. We also learned how to use “colordiff” to make the file differences more recognizable. But if you find terminal-based utility hard to use, there are some GUI-based tools as well, such as Kompare, DiffMerge, Meld — Diff Tool and Diffuse — GUI Giff Tool.

About the author

Sam U

I am a professional graphics designer with over 6 years of experience. Currently doing research in virtual reality, augmented reality and mixed reality.
I hardly watch movies but love to read tech related books and articles.

Источник

Оцените статью
Adblock
detector