Подтвердить что ты не робот

Есть ли способ проверить, есть ли символические ссылки, указывающие на каталог?

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

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

Есть ли способ проверить, есть ли какие-либо символические ссылки, указывающие на определенную папку?

4b9b3361

Ответ 1

Я бы использовал команду find.

find . -lname /particular/folder

Это будет рекурсивно искать текущий каталог для символических ссылок на /particular/folder. Обратите внимание, что он найдет только абсолютные символические ссылки. Аналогичную команду можно использовать для поиска всех символических ссылок, указывающих на объекты, называемые "папкой":

find . -lname '*folder'

Оттуда вам нужно будет отсеять любые ложные срабатывания.

Ответ 2

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

Ответ 3

На самом деле нет прямого способа проверить такие символические ссылки. Учтите, что у вас может быть файловая система, которая не монтируется постоянно (например, внешний USB-накопитель), которая может содержать символические ссылки на другой том в системе.

Вы можете что-то сделать с помощью:

for a in `find / -type l`; do echo "$a -> `readlink $a`"; done | grep destfolder

Я отмечаю, что FreeBSD find не поддерживает параметр -lname, поэтому я оказался выше.

Ответ 4

find . -type l -printf '%p -> %l\n'

Ответ 5

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

Ответ 6

find / -lname 'fullyqualifiedpathoffile'

Ответ 7

Для жестких ссылок вы можете получить inode вашего каталога с одним из параметров "ls" (-i, я думаю).

Тогда a find с -inum найдет все общие жесткие ссылки.

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

Ответ 8

find /foldername -type l -exec ls -lad {} \;

Ответ 9

Отличный блог прямо здесь! Я действительно наслаждался вашей статьей! Большое спасибо! игры