Сравнить две папки по содержимому linux

Сравнение содержимого директорий с помощью приложения Meld в Linux

Оригинал: How to compare directories with Meld on Linux
Автор: Himanshu Arora
Дата публикации: 27 января 2017 г.
Перевод: А.Панин
Дата перевода: 10 марта 2017 г.

Мы уже рассмотрели приложение Meld с точки зрения начинающего пользователя (не обойдя стороной вопрос его установки), а также некоторые приемы использования данного приложения, которые могут быть полезны опытным пользователям. Если вы помните, в статье для начинающих пользователей мы упоминали о том, что Meld может использоваться как для сравнения файлов, так и для сравнения содержимого директорий. Теперь, когда мы рассмотрели вопрос сравнения файлов, пришло время рассмотреть вопрос сравнения содержимого директорий.

Но перед тем, как приступить к рассмотрению обозначенной функции приложения, следует упомянуть о том, что все инструкции и примеры, представленные в данной статье, были протестированы в системе Ubuntu 14.04 с Meld версии 3.14.2.

Сравнение содержимого директорий с помощью Meld

Для сравнения содержимого двух директорий с помощью Meld следует запустить данное приложение и воспользоваться его функцией под названием Сравнение каталогов ( Directory comparsion ).

После этого нужно выбрать директории, содержимое которых вы хотите сравнить.

По завершении выбора исследуемых директорий следует нажать кнопку Сравнить ( Compare ), в результате чего вы увидите содержимое двух директорий вместо областей редактирования, используемых в случае сравнения обычных файлов.

Разумеется, так как в данном случае осуществляется исследование содержимого директорий, вместо областей редактирования выводятся древовидные списки с файлами и директориями из выбранных директорий. И, как несложно заметить на иллюстрации выше, отличия в форме новых или измененных файлов выделяются с помощью различных цветов.

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

В следующей таблице, скопированной с веб-сайта рассматриваемого проекта, описываются различные состояния элементов при сравнении содержимого директорий в Meld.

Состояние Отображение Значение
Идентичный элемент Обычный шрифт Файл/директория являются идентичными во всех исследуемых директориях.
Идентичный элемент после фильтрации Наклонный шрифт Файлы в исследуемых директориях отличаются. Но после применения фильтров они становятся идентичными.
Модифицированный элемент Полужирный шрифт синего цвета Файлы в исследуемых директориях отличаются.
Новый элемент Полужирный шрифт зеленого цвета Данный файл/директория существует в данной исследуемой директории, но отсутствует в других исследуемых директориях.
Отсутствующий элемент Обычный шрифт серого цвета с перечеркиванием Данный файл/директория не существует в данной директории, но существует в других исследуемых директориях.
Ошибочный элемент Полужирный шрифт ярко-красного цвета с фоном желтого цвета При сравнении данного файла произошла ошибка. Чаще всего ошибки связаны с правами доступа к файлам (то есть, у Meld нет прав для чтения их содержимого), а также с некорректным кодированием их имен.

По умолчанию Meld отображает все элементы исследуемых директорий даже если они являются идентичными (то есть, между ними нет отличий). Однако, вы можете настроить инструмент таким образом, чтобы он не отображал такие файлы/директории путем нажатия на кнопку Одинаковые ( Same ) на панели инструментов — в результате эта кнопка будет деактивирована.

Читайте также:  Snapseed для компьютера windows

Это результат моего сравнения после деактивации кнопки Одинаковые .

Несложно заметить, что в данном случае отображаются лишь отличия между двумя директориями (новые и модифицированные файлы). Аналогично, при деактивации кнопки Новые ( New ) будут отображаться лишь модифицированные файлы. Поэтому вы можете свободно использовать три этих кнопки для выбора отличий, которые будут отображаться Meld после сравнения двух директорий.

Что касается отличий, вы можете переходить от одного отличия к другому с помощью кнопок со стрелками, направленными вверх и вниз, которые расположены над областью вывода содержимого директорий, а для показа областей редактирования содержимого двух файлов вы можете либо использовать двойной клик по отношению к имени любого файла, либо нажать на кнопку Сравнить ( Compare ), расположенную рядом с упомянутыми выше кнопками.

Примечание 1: если вы внимательно посмотрите на последнюю иллюстрацию, вы обнаружите цветные блоки слева и справа от представлений древовидных структур в окне Meld. Эти блоки по своей сути являются «простым представлением результатов сравнения». Для любых отличающихся файла или директории рядом с древовидным представлением создается небольшой цветной блок. Вы можете нажимать на каждый из таких блоков для непосредственного перехода к соответствующему элементу древовидного представления.

Примечание 2: хотя у вас всегда имеется возможность открытия файлов и их объединения в соответствии с вашими представлениями, при необходимости добавления всех отличных строк в соответствующий файл/директорию (то есть, приведения файлов/директорий к полностью идентичному содержанию), вы можете использовать кнопки Copy to Left и Copy to Right .

Например, вы можете выбрать файл или директорию на левой панели и нажать на кнопку Copy to Right для приведения соответствующего элемента на правой панели к идентичному содержанию.

Кроме того, существует раскрывающееся меню Фильтры , расположенное на панели инструментов сразу же после блока из трех кнопок Одинаковые , Новые и Измененные . С помощью него вы можете выбрать или отказаться от выбора типов файлов, чтобы Meld отображал или не отображал их в рамках древовидного списка в процессе сравнения директорий. Официальная документация описывает элементы этого списка, как «шаблоны имен файлов, которые не будут отслеживаться в процессе сравнения директорий».

Среди элементов упомянутого раскрывающегося списка имеются файлы резервных копий (Backups), файлы специфичных для операционной системы метаданных (OS-specific metadata), файлы систем контроля версий (Version Control), бинарные файлы (Binaries) и мультимедийные файлы (Media).

Эквивалент рассматриваемого списка также доступен после осуществления перехода в рамках меню окна приложения Вид — Типы файлов . Вы можете добавить новые элементы в данное меню (а также удалить существующие), осуществив переход в рамках главного меню приложения Настройки — Фильтры файлов .

Для создания нового фильтра вам придется использовать шаблоны командной оболочки. Ниже приведен список шаблонов командной оболочки, поддерживаемых Meld.

Шаблон Совпадает с
* Любыми символами (то есть нулем или большим количеством произвольных символов)
? Ровно одним произвольным символом
[abc] Любым из символов из квадратных скобок
[!abc] Любым символом, кроме приведенных в квадратных скобках
Последовательностями символов «cat» и «dog»

Наконец, важно знать, что регистр символов имен файлов играет важную роль, ведь Meld по умолчанию осуществляет их сравнение с учетом регистра символов. Это означает, что, к примеру, файлы с именами README и ReadMe будут рассматриваться приложением как не связанные друг с другом.

К счастью, Meld позволяет пользователю деактивировать данную функцию. Все, что для этого нужно — это открыть подменю Вид меню окна приложения и установить флажок Игнорировать регистр имени файла ( Ignore Filename Case ).

Заключение

Вы наверняка согласитесь с утверждением о том, что сравнение директорий с помощью Meld является не только не сложным, а вообще достаточно простым процессом. Единственным аспектом данного процесса, который может вызвать некоторые трудности, является использование и создание фильтров файлов, но рано или поздно вы освоите и его. Разумеется, все зависит от ваших потребностей.

Да, с помощью Meld вы также можете сравнивать по три директории одновременно, причем для этого нужно всего лишь установить флажок и выбрать с помощью соответствующего элемента управления третью директорию перед началом сравнения. Мы не обсуждали эту возможность в рамках данной статьи, но наверняка будем обсуждать ее в одной из следующих статей серии.

Источник

Чем сравнить две директории в Linux? С помощью Diff и Meld Tools

Для тех пользователей линукс мира, у кого как и у меня, время от времени возникает необходимость сравнения файлов и директорий, решил написать эту небольшую статью, о двух прекрасных, на мой взгляд, утилитах — утилита командной строки diff и утилита с графическим Meld Tools. Опережая реакцию неосиляторов и не желающих разбираться самостоятельно, ответственно заявляю, эта статья лишь ознакомительная, и не претендует на роль мануала, посему не буду подробно расписывать как сравнивать файлы и директории в Diff и Meld, тем более они имеют, на мой взгляд, интуитивно понятный интерфейс, разобраться в котором сможет даже бабушка, ну или дедушка. К слову сказать, в настоящее время у меня есть очень явный пример того, что линукс в целом и информационные технологии, в частности, всем возрастам покорны. В Manjaro группе в телеграмме, есть у нас товарищ, ему 61 год, с компьютером он познакомился в 55 лет, ныне пенсионер и всю жизнь проработал шахтёром. Так вот от него вопросов по настройке и помощи в линуксе слышно меньше, чем от 20-25 летних юнцов.

Что-то я ушёл от темы. Итак, обычно для того, чтобы сравнить два файла в Linux, я использую

. Если честно пользуюсь ей я ни потому, что я прям вот обожаю до ужаса этот волшебный мир консоли хотя да, он великолепен, а потому что diff есть «из коробки»в большинстве, если во всех дистрибутивах Linux, и если возникает необходимость сравнения файлов на чужом компьютере, то легче всего открыть терминал и использовать diff.

Так вот для сравнения двух каталогов достаточно выполнить простейшую команду:
diff -q directory-1/ directory-2/
Так это выглядит у меня
Если вам необходимо сравнить рекурсивно, со сравнением поддиректорий, то используйте ключ -r.

Вторая утилита о которой хочу рассказать, это графическая утилита которая позиционируется, как инструмент визуального сравнения и слияния для рабочего стола GNOME, но конечно же, не будет преступлением использовать её и с другими окружениями рабочего стола. Устанавливается она простым вводом одной команды:
sudo pacman -S meld [Archlinux и его производные]
sudo apt install meld [Debian/Ubuntu и его производные]
sudo yum install meld [RHEL/CentOS и его производные]
sudo dnf install meld [Fedora 22+ и его производные]

Так выглядит её интерфейс

Как я написал выше, разберется в нём и стар и млад, учиться никогда не поздно. Благо в линуксе каждый найдёт для себя то, что ему нравится, кто-то фанатеет от консольки и работает только в ней, кто-то любит графические интерфейсы. Если у кого то возникнут вопросы, не стесняйтесь спрашивайте в комментариях всегда открыт к диалогу.

Источник

Сравнение файлов в Linux (команда diff)

Для сравнения двух или нескольких файлов в Linux есть команда 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 удобно перенаправить в файл с расширением diff . Большинство текстовых редакторов в Linux, например Gedit, распознают этот файл и подсвечивают его синтаксис. Чтобы направить результат сравнения в файл changes.diff нужно использовать символ перенаправления потока (>):

Сравнение директорий, содержащих текстовые файлы

Рассмотрим пример сравнения двух директорий ( mydir1 и mydir2 ), которые содержат текстовые файлы. Основное отличие здесь от примера выше состоит в том, что мы добавим опцию -r , означающую рекурсивный обход файлов в директориях.

Теперь предположим, что в директориях, в которых мы сравниваем файлы, находится много «мусора», который мы не должны сравнивать. Создадим файл excludeFiles и запишем в него шаблоны и названия файлов, которые мы не должны сравнивать. Например, содержимое excludeFiles может иметь вид:

Теперь укажем команде diff, чтобы она использовала наш файл excludeFiles при сравнении каталогов:

Таким образом, мы сравниваем файлы, имена которых не попадают под шаблоны в файле excludeFiles , например, vasya.exe или ChangeLog12 .

Добавим еще несколько опций, которые описаны выше, чтобы улучшить результат сравнения:

Мы сравниваем файлы в директориях mydir1 и mydir2 , игнорируя изменения, связанные с добавлением пустых строк, пробелов, табуляции, а также используем шаблоны имен файлов в excludeFiles , чтобы исключить из сравнения ненужные файлы.

Заключение

Дополнительную информацию по использованию команды diff в вашей системе Linux вы можете получить, выполнив команду:

Также существуют программы, которые позволяют сравнивать файлы, используя графический интерфейс. Например, программа Meld, которая в наглядном виде показывает где и что изменилось в файлах.

Источник

Читайте также:  Adguard mac os вечная лицензия
Оцените статью