Сравнение двух каталогов в 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/file1md5sum– для проверки контрольных сумм файлов
md5sum dir1/* dir2/*Заключение.
Мы рассмотрели несколько способов сравнения каталогов в Linux. Команда diff – мощный инструмент, позволяющий быстро находить различия между файлами и папками. Используя флаги -q, -r и -s, можно глубже анализировать каталоги.
Было ли это полезно?
0 / 0