Наши партнеры

UnixForum





Библиотека сайта rus-linux.net

Сравнение содержимого директорий с помощью приложения 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) на панели инструментов - в результате эта кнопка будет деактивирована.

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

Несложно заметить, что в данном случае отображаются лишь отличия между двумя директориями (новые и модифицированные файлы). Аналогично, при деактивации кнопки Новые (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} Последовательностями символов "cat" и "dog"

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

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

Заключение

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

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