Сравнение двух каталогов в Linux может показаться простой задачей, но на практике требует внимательного подхода. Даже если каталоги содержат одинаковые подкаталоги и файлы с одинаковыми именами, их содержимое может отличаться.
В этой статье мы рассмотрим, как правильно сравнить каталоги в Linux с помощью команды diff
и других инструментов.
Почему важно сравнивать каталоги в Linux?
Допустим, у вас есть два каталога dir1
и dir2
с похожей структурой. Вам нужно определить, являются ли они идентичными или содержат различия. Визуальное сравнение может быть недостаточным, особенно при большом количестве файлов.
Чтобы лучше понять структуру каталогов, используем команду:
tree dir1
tree dir2
Пример вывода:


На первый взгляд видно, что dir1
содержит subdir3
, которого нет в dir2
. Однако для более детального анализа воспользуемся командой diff
.
Как сравнить каталоги в Linux с помощью diff?
1. Быстрое сравнение файлов и папок
Команда diff
предназначена для сравнения текстовых файлов, но также может работать с каталогами:
diff -q dir1 dir2
Опция -q
(quiet) показывает только различия между каталогами. Пример вывода:

Здесь видно, что файлы newer.txt
и new.txt
уникальны для каждого каталога, а subdir3
присутствует только в dir1
.
2. Рекурсивное сравнение всех файлов и подкаталогов
Чтобы diff
анализировал не только верхний уровень, но и подкаталоги, добавим флаг -r
:
diff -qr dir1 dir2
Пример вывода:

Теперь команда показывает, что file23
находится в dir2/subdir2
, но отсутствует в dir1
.
3. Проверка идентичных файлов
Если вам нужно убедиться, какие файлы полностью совпадают, добавьте флаг -s
:
diff -qrs dir1 dir2
Вывод:

Теперь мы видим, какие файлы совпадают, а какие различаются.
Дополнительные способы сравнения каталогов
Помимо diff
, можно использовать другие инструменты:
rsync
– для сравнения и синхронизации каталогов
rsync -an dir1/ dir2/
cmp
– для побайтового сравнения файлов
cmp dir1/file1 dir2/file1
md5sum
– для проверки контрольных сумм файлов
md5sum dir1/* dir2/*
Заключение.
Мы рассмотрели несколько способов сравнения каталогов в Linux. Команда diff
– мощный инструмент, позволяющий быстро находить различия между файлами и папками. Используя флаги -q
, -r
и -s
, можно глубже анализировать каталоги.
Was this helpful?
0 / 0