Сравнение папок и файлов в linux. Сравнение файлов в Linux для веб-разработчика
Иногда возникает необходимость сравнить несколько файлов между собой. Это может понадобиться при анализе разницы между несколькими версиями конфигурационного файла или просто для сравнения различных файлов. В Linux для этого есть несколько утилит, как для работы через терминал, так и в графическом интерфейсе.
В этой статье мы рассмотрим как выполняется сравнение файлов Linux. Разберем самые полезные способы, как для терминала, так и в графическом режиме. Сначала рассмотрим как выполнять сравнение файла linux с помощью утилиты diff.
Утилита diff linux - это программа, которая работает в консольном режиме. Ее синтаксис очень прост. Вызовите утилиту, передайте нужные файлы, а также задайте опции, если это необходимо:
$ diff опции файл1 файл2
Можно передать больше двух файлов, если это нужно. Перед тем как перейти к примерам, давайте рассмотрим опции утилиты:
- -q - выводить только отличия файлов;
- -s - выводить только совпадающие части;
- -с - выводить нужное количество строк после совпадений;
- -u - выводить только нужное количество строк после отличий;
- -y - выводить в две колонки;
- -e - вывод в формате ed скрипта;
- -n - вывод в формате RCS;
- -a - сравнивать файлы как текстовые, даже если они не текстовые;
- -t - заменить табуляции на пробелы в выводе;
- -l - разделить на страницы и добавить поддержку листания;
- -r - рекурсивное сравнение папок;
- -i - игнорировать регистр;
- -E - игнорировать изменения в табуляциях;
- -Z - не учитывать пробелы в конце строки;
- -b - не учитывать пробелы;
- -B - не учитывать пустые строки.
Это были основные опции утилиты, теперь давайте рассмотрим как сравнить файлы Linux. В выводе утилиты кроме, непосредственно, отображения изменений, выводит строку в которой указывается в какой строчке и что было сделано. Для этого используются такие символы:
- a - добавлена;
- d - удалена;
- c - изменена.
К тому же, линии, которые отличаются, будут обозначаться символом <, а те, которые совпадают - символом >.
Вот содержимое наших тестовых файлов:
Теперь давайте выполним сравнение файлов diff:
diff file1 file2
В результате мы получим строчку: 2,3c2,4. Она означает, что строки 2 и 3 были изменены. Вы можете использовать опции для игнорирования регистра:
diff -i file1 file2
Можно сделать вывод в две колонки:
diff -y file1 file2
А с помощью опции -u вы можете создать патч, который потом может быть наложен на такой же файл другим пользователем:
diff -u file1 file2
Чтобы обработать несколько файлов в папке удобно использовать опцию -r:
diff -r ~/tmp1 ~/tmp2
Для удобства, вы можете перенаправить вывод утилиты сразу в файл:
diff -u file1 file2 > file.patch
Как видите, все очень просто. Но не очень удобно. Более приятно использовать графические инструменты.
Сравнение файлов Linux с помощью GUI
Существует несколько отличных инструментов для сравнения файлов в linux в графическом интерфейсе. Вы без труда разберетесь как их использовать. Давайте рассмотрим несколько из них:
1. Kompare
Kompare - это графическая утилита для работы с diff, которая позволяет находить отличия в файлах, а также объединять их. Написана на Qt и рассчитана в первую очередь на KDE. Вот ее основные особенности:
- Поддержка нескольких форматов diff;
- Поддержка сравнение файла linux и каталогов;
- Поддержка просмотра файлов diff;
- Настраиваемый интерфейс;
- Создание и применение патчей к файлам.
2. DiffMerge
DiffMerge - это кроссплатформенная программ для сравнения и объединения файлов. Позволяет сравнивать два или три файла. Поддерживается редактирование строк на лету.
Особенности:
- Поддержка сравнения каталогов;
- Интеграция с просмотрщиком файлов;
- Настраиваемая.
3. Meld
Это легкий инструмент для сравнения и объединения файлов. Он позволяет сравнивать файлы, каталоги, а также выполнять функции системы контроля версий. Программа создана для разработчиков и имеет такие особенности:
- Сравнение двух и трех файлов;
- Использование пользовательских типов и слов;
- Режим автоматического слияния и действия с боками текста;
- Поддержка Git, Mercurial, Subversion, Bazar и многое другое.
4. Diffuse
Diffuse - еще один популярный и достаточно простой инструмент для сравнения и слияния файлов. Он написан на Python. Поддерживается две основные возможности - сравнение файлов и управление версиями. Вы можете редактировать файлы прямо во время просмотра. Основные функции:
- Подсветка синтаксиса;
- Сочетания клавиш для удобной навигации;
- Поддержка неограниченного числа отмен;
- Поддержка Unicode;
- Поддержка Git, CVS, Darcs, Mercurial, RCS, Subversion, SVK и Monotone.
5. XXdiff
XXdiff - это свободный и очень мощный инструмент для сравнения и слияния файлов. Но у программы есть несколько минусов. Это отсутствие поддержки Unicode и редактирования файлов.
Особенности:
- Поверхностное или рекурсивное сравнение одного или двух файлов и каталогов;
- Подсветка отличий;
- Интерактивное объединение;
- Поддержка внешних инструментов сравнения, такие как GNU Diff, SIG Diff, Cleareddiff и многое другое;
- Расширяемость с помощью сценариев;
- Настраиваемость.
6. KDiff3
KDiff3 - еще один отличный, свободный инструмент для сравнения файлов в окружении рабочего стола KDE. Он входит в набор программ KDevelop и работает на всех платформах, включая Windows и MacOS. Можно выполнить сравнение двух файлов linux для двух или трех, или даже сравнить каталоги. Вот основные особенности:
- Отображение различий построчно и посимвольно;
- Поддержка автослияния;
- Обработка конфликтов при слиянии;
- Поддержка Unicode;
- Отображение отличий;
- Поддержка ручного выравнивания.
Выводы
В этой статье мы рассмотрели как выполняется сравнение файлов linux с помощью терминала, как создавать патчи, а также сделали небольшой обзор лучших графических утилит для сравнения файлов. А какие инструменты для сравнения используете вы? Напишите в комментариях!
Для сравнения двух или нескольких файлов в Linux есть команда diff. Она может сравнивать как отдельные файлы, так и каталоги. Рассмотрим синтаксис, опции команды diff и несколько примеров использования.
Синтаксис команды diff
Команда diff имеет следующий синтаксис:
Diff [опции] файлы-или-директории
Мы указываем опции и подаем на вход два или более файлов или директорий, которые нам нужно сравнить.
Опции команды diff
Рассмотрим основные опции команды diff. Я рассмотрю только те опции, которые сам использую наиболее часто.
-E | игнорировать изменения, связанные с добавлением символа табуляции в тексте. |
-b | игнорировать изменения, связанные с добавлением пробелов. |
-w | игнорировать изменения, связанные с добавлением пробелов и табуляции. |
-B | игнорировать новые пустые строки. |
-p (или —show-c-function) | показать название функции языка C, в которой найдены изменения. |
-y (или —side-by-side) | отобразить результаты в две колонки. |
-r | просматривать каталоги рекурсивно. |
-X FILE | исключить из поиска файлы, имена которых совпадают с шаблонами в файле FILE. |
-d (или —minimal) | попытаться найти как можно меньше изменений (то есть исключить ложные срабатывания). |
Примеры использования команды diff
Сравнение двух текстовых файлов
Для простого сравнения двух текстовых файлов с именами myfile1 и myfile2 выполним в терминале команду:
Diff myfile1 myfile2
Вывод команды diff удобно перенаправить в файл с расширением diff . Большинство текстовых редакторов в Linux, например Gedit, распознают этот файл и подсвечивают его синтаксис. Чтобы направить результат сравнения в файл changes.diff нужно использовать символ перенаправления потока (>):
Diff myfile1 myfile2 > changes.diff
Сравнение директорий, содержащих текстовые файлы
Рассмотрим пример сравнения двух директорий (mydir1 и mydir2), которые содержат текстовые файлы. Основное отличие здесь от примера выше состоит в том, что мы добавим опцию -r, означающую рекурсивный обход файлов в директориях.
Diff -r mydir1 mydir2 > changes.diff
Теперь предположим, что в директориях, в которых мы сравниваем файлы, находится много «мусора», который мы не должны сравнивать. Создадим файл excludeFiles и запишем в него шаблоны и названия файлов, которые мы не должны сравнивать. Например, содержимое excludeFiles может иметь вид:
*.o ChangeLog* *.bak *.exe
Теперь укажем команде diff, чтобы она использовала наш файл excludeFiles при сравнении каталогов:
Diff -r -X excludeFiles mydir1 mydir2 > changes.diff
Таким образом, мы сравниваем файлы, имена которых не попадают под шаблоны в файле excludeFiles, например, vasya.exe или ChangeLog12.
Добавим еще несколько опций, которые описаны выше, чтобы улучшить результат сравнения:
Diff -rwBd -X excludeFiles mydir1 mydir2 > changes.diff
Мы сравниваем файлы в директориях mydir1 и mydir2, игнорируя изменения, связанные с добавлением пустых строк, пробелов, табуляции, а также используем шаблоны имен файлов в excludeFiles, чтобы исключить из сравнения ненужные файлы.
Заключение
Дополнительную информацию по использованию команды diff в вашей системе Linux вы можете получить, выполнив команду:
Man diff
Также существуют программы, которые позволяют сравнивать файлы, используя графический интерфейс. Например, программа Meld , которая в наглядном виде показывает где и что изменилось в файлах.
Веб-мастерам или владельцам сайтов часто бывает необходимо сравнить два файла по содержимому. Из этой статьи вы узнаете как сравнить два файла между собой. Здесь описаны все известные мне способы для сравнения текстовых файлов и скрипты (html, css, php и так далее).
Способ 1. Meld
Meld - графический инструмент для получения различий и слияния двух файлов, двух каталогов. Meld - визуальный инструмент сравнения и объединения файлов и каталогов для Linux. Meld ориентирован, в первую очередь, для разработчиков. Однако он может оказаться полезным любому пользователю, нуждающемуся в хорошем инструменте для сравнения файлов и директорий.
В Meld вы можете сравнивать два или три файла, либо два или три каталога. Вы можете просматривать рабочую копию из популярных систем контроля версий, таких, таких как CVS, Subversion, Bazaar-NG и Mercurial. Meld представлен для большинства linux дистрибутивов (Ubuntu, Suse, Fedora и др.), и присутствует в их основных репозиториях.
# aptitude install meldСпособ 2. Сравнение содержимого двух файлов в программе WinMerge.
Бесплатная программа WinMerge позволяет сравнивать не только содержимое файлов, она также сравнивает содержимое целых папок. WinMerge является Open Source инструментом сравнения и слияния для Windows. WinMerge может сравнивать как файлы, так и папки, отображая различия в визуальной текстовой форме, которые легко понять и обработать.
После установки, открываете пункт меню «Файл» - «Открыть». Выбираете файлы для сравнения. Для этого нажимаете на кнопку «Обзор» и выбираете файл. Выбрав файлы, нажимаете на кнопку «ОК».
В WinMerge можно также редактировать файлы. После закрытия окна сравнения, программа предложит сохранить изменения в файлах.
Способ 3. diff
diff - утилита сравнения файлов, выводящая разницу между двумя файлами.
Для сравнения каталогов используйте эту команду: $ diff -qr < current-directory> < backup-directory>
Способ 4. Kompare
Kompare - отображает различия между файлами. Умеет сравнивать содержимое файлов или каталогов, а также создавать, показывать и применять файлы патчей. Kompare - это графическая утилита для работы с diff, которая позволяет находить отличия в файлах, а также объединять их. Написана на Qt и рассчитана в первую очередь на KDE. Вот ее основные особенности:
Поддержка нескольких форматов diff;
Поддержка сравнение файла linux и каталогов;
Поддержка просмотра файлов diff;
Настраиваемый интерфейс;
Создание и применение патчей к файлам.
Способ 5. Сравнение файлов в программе Total Commander
Поддерживаемые операционные системы: Windows
В Total Commander существует инструмент сравнения файлов по содержимому, где можно не только сравнить содержимое, но и редактировать его и копировать из одного файла в другой.
После запуска Total Commander – в одной из панелей выбираете (клавиша Insert) первый файл для сравнения – во второй панели открываете папку со вторым файлом и ставим на него курсор. Вызываем программу для сравнения: "Файлы→Сравнить по содержимому".
Для внесения изменений в файл достаточно нажать на кнопку «Редактировать». В программе доступны функции копирования и отката, поиска и изменение кодировки. Если вы внесли изменения в файл, то после закрытия окна сравнения, будет предложено сохранить изменения.
Способ 6. Сравнение файлов в Notepad++
Поддерживаемые операционные системы: Windows, возможен запуск в Linux
Notepad++ не умеет сравнивать файлы. Для появления этого функционала в Notepad++ нужно установить плагин «Compare».
Запускаете редактор – переходите в пункт меню «Плагины» - «Plugin Manager» - «Show Plugin Manager». В новом окне выбираете плагин «Compare» и жмёте кнопку «Install».
После установки плагина откройте два файла и выбирите меню «Плагины» - «Compare» - «Compare (Alt+D)». Результат сравнения файлов будет представлен в отдельных панелях. Напротив строк, в которых найдены отличия будет стоять предупреждающий знак.
Способ 7. Сравнение файлов с помощью командной строки Windows
Сравнение с помощью командной строки Windows (cmd.exe) не позволяет редактировать файлы, но просто сравнить содержимое файлов, используя этот способ, вы можете.
Для вызова командной строки Windows перейдите «Пуск» - «Все программы» - «Стандартные» - «Командная строка» или нажмите клавиш "Windows+R", введите cmd и нажмите клавишу Enter.
В командной строке введите команду:
fc / N путь к первому файлу путь ко второму файлуИногда возникает необходимость сравнить несколько файлов между собой. Это может понадобиться при анализе разницы между несколькими версиями конфигурационного файла или просто для сравнения различных файлов. В 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. В выводе утилиты кроме, непосредственно, отображения изменений, выводит строку в которой указывается в какой строчке и что было сделано. Для этого используются такие символы:
- a - добавлена;
- d - удалена;
- c - изменена.
К тому же, линии, которые отличаются, будут обозначаться символом <, а те, которые совпадают - символом >.
Вот содержимое наших тестовых файлов:
Теперь давайте выполним сравнение файлов diff:
$ diff file1 file2В результате мы получим строчку: 2,3c2,4. Она означает, что строки 2 и 3 были изменены. Вы можете использовать опции для игнорирования регистра:
$ diff -i file1 file2Можно сделать вывод в две колонки:
$ diff -y file1 file2А с помощью опции -u вы можете создать патч, который потом может быть наложен на такой же файл другим пользователем:
$ diff -u file1 file2Чтобы обработать несколько файлов в папке удобно использовать опцию -r:
$ diff -r ~/tmp1 ~/tmp2Для удобства, вы можете перенаправить вывод утилиты сразу в файл:
$ diff -u file1 file2 > file.patchКак видите, все очень просто. Но не очень удобно. Более приятно использовать графические инструменты.
Сравнение файлов Linux с помощью GUI
Существует несколько отличных инструментов для сравнения файлов в linux в графическом интерфейсе. Вы без труда разберетесь как их использовать. Давайте рассмотрим несколько из них:
1. Kompare
Kompare - это графическая утилита для работы с diff, которая позволяет находить отличия в файлах, а также объединять их. Написана на Qt и рассчитана в первую очередь на KDE. Вот ее основные особенности:
- Поддержка нескольких форматов diff;
- Поддержка сравнение файла linux и каталогов;
- Поддержка просмотра файлов diff;
- Настраиваемый интерфейс;
- Создание и применение патчей к файлам.
2. DiffMerge
DiffMerge - это кроссплатформенная программ для сравнения и объединения файлов. Позволяет сравнивать два или три файла. Поддерживается редактирование строк на лету.
Особенности:
- Поддержка сравнения каталогов;
- Интеграция с просмотрщиком файлов;
- Настраиваемая.
3. Meld
Это легкий инструмент для сравнения и объединения файлов. Он позволяет сравнивать файлы, каталоги, а также выполнять функции системы контроля версий. Программа создана для разработчиков и имеет такие особенности:
- Сравнение двух и трех файлов;
- Использование пользовательских типов и слов;
- Режим автоматического слияния и действия с боками текста;
- Поддержка Git, Mercurial, Subversion, Bazar и многое другое.
4. Diffuse
Diffuse - еще один популярный и достаточно простой инструмент для сравнения и слияния файлов. Он написан на Python. Поддерживается две основные возможности - сравнение файлов и управление версиями. Вы можете редактировать файлы прямо во время просмотра. Основные функции:
- Подсветка синтаксиса;
- Сочетания клавиш для удобной навигации;
- Поддержка неограниченного числа отмен;
- Поддержка Unicode;
- Поддержка Git, CVS, Darcs, Mercurial, RCS, Subversion, SVK и Monotone.
5. XXdiff
XXdiff - это свободный и очень мощный инструмент для сравнения и слияния файлов. Но у программы есть несколько минусов. Это отсутствие поддержки Unicode и редактирования файлов.
Особенности:
- Поверхностное или рекурсивное сравнение одного или двух файлов и каталогов;
- Подсветка отличий;
- Интерактивное объединение;
- Поддержка внешних инструментов сравнения, такие как GNU Diff, SIG Diff, Cleareddiff и многое другое;
- Расширяемость с помощью сценариев;
- Настраиваемость.
6. KDiff3
KDiff3 - еще один отличный, свободный инструмент для сравнения файлов в окружении рабочего стола KDE. Он входит в набор программ KDevelop и работает на всех платформах, включая Windows и MacOS. Можно выполнить сравнение двух файлов linux для двух или трех, или даже сравнить каталоги. Вот основные особенности:
- Отображение различий построчно и посимвольно;
- Поддержка автослияния;
- Обработка конфликтов при слиянии;
- Поддержка Unicode;
- Отображение отличий;
- Поддержка ручного выравнивания.
В операционной системе Linux есть несколько программных решений для сравнения внутреннего содержимого двух файлов различными методами. Безусловно, такая функция будет безумно полезна веб-разработчику для сравнения двух текстовых файлов. К примеру, есть 2 файла стилей css, которые Вам нужно быстро сравнить чтобы найти в них отличия. Или посмотреть, что нового в обновленном PHP скрипте.