Запустите diff по символическим ссылкам

У меня есть две папки, содержащие несколько неработающих символических ссылок.

Есть ли способ заставить diff сравнивать цель ссылок вместо того, чтобы пытаться перейти по ссылкам?

2
задан 28 January 2013 в 18:13

1 ответ

Под «содержанием ссылок» я предполагаю, что вы имеете в виду «цель ссылки». Если это правильно, то да, есть. Вроде, как бы, что-то вроде. И вам нужно получить creatie с перенаправлением оболочки:)

diff -u \
<(cd /path/to/dir1 && find . -type l -exec stat '{}' '+' | grep 'File:' | sort) \
<(cd /path/to/dir2 && find . -type l -exec stat '{}' '+' | grep 'File:' | sort)

Для этого нужно запустить diff с вводом двух команд:

cd /path/to/dir1 && find . -type l -exec stat '{}' '+' | grep 'File:' | sort
cd /path/to/dir2 && find . -type l -exec stat '{}' '+' | grep 'File:' | sort

Эти find | grep | sort Команды отображают имя и цель всех символических ссылок, которые он может найти в dir1 и dir2, вместе с их целями. Таким образом, в результате вы увидите, какие символические ссылки отличаются.

(Отредактировано из исходного ответа, который включал полный путь к имени файла в выходных данных ls, и, следовательно, показывал каждый файл как отдельный. Обходили это с помощью сначала cd. Также, если символические ссылки имели разные даты и время, diff также покажет их как разные. Обойти это, используя stat для извлечения информации, которую мы на самом деле хотим.)

0
ответ дан 28 January 2013 в 18:13

Другие вопросы по тегам:

Похожие вопросы: