Как сравнить два каталога в Linux

Автор: | 29/08/2023

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

Сравнение каталогов — это все для зрелых пользователей, которые тщательно изучили спектр управления файлами Linux. Например, у вас может быть два каталога, которые очень похожи с точки зрения содержимого, хранящегося в них.

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

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

В этой статье мы расскажем о правильном подходе к сравнению двух каталогов в среде операционной системы Linux.

Постановка задачи

Давайте создадим два каталога с немного похожими структурами каталогов, на которые мы будем ссылаться в этой статье. Мы назовем их dir1 и dir2 соответственно.

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

$ tree dir1
$ tree dir2

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

Сравнение каталогов с помощью команды diff

Основная роль команды diff заключается в построчном сравнении двух файлов, а синтаксис ее использования выглядит следующим образом:

$ diff [OPTION]... FILES

Команда diff предустановлена во всех основных дистрибутивах операционной системы Linux, поэтому нет необходимости обращаться к менеджеру пакетов по поводу ее существования.

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

$ diff -q /path/to/directory1 /path/to/directory2

Сравнение файлов на уровне корневого каталога

Чтобы реализовать приведенную выше команду в пользу двух каталогов, которые мы только что создали, окончательная реализация нашей команды diff будет выглядеть следующим образом:

$ diff -q dir1 dir2

Параметр команды -q сообщает о различных файлах в каталогах.

Обратите внимание, что мы реализуем команду diff на уровне каталога, поэтому нет необходимости вводить абсолютные пути dir1 и dir2.

Согласно приведенным выше выводам, команда diff тщательно анализирует различия и общие черты в двух каталогах.

Сравнение файлов на всех уровнях каталогов

Приведенные выше выходные данные команды не анализируют содержимое созданных нами подкаталогов. Чтобы он копался в этих подкаталогах, нам нужно включить параметр команды -r, чтобы команда diff была рекурсивной.

$ diff -qr dir1 dir2

Изменение команды diff обеспечило полное сравнительное представление файлов и файлов в подкаталогах ранее созданных нами каталогов.

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

$ diff -qrs dir1 dir2

Мы видели, насколько эффективна команда diff при сравнении двух каталогов в среде ОС Linux. Надеюсь, вам понравилась статья, и не стесняйтесь оставлять комментарии или отзывы.

Как сравнить два каталога в системе Linux (ubuntumint.com)