Есть ли способ проверить, есть ли символические ссылки, указывающие на каталог?
У меня есть папка на моем сервере, на которую у меня было несколько символических ссылок. С тех пор я создал новую папку, и я хочу изменить все эти символические ссылки, чтобы указать на новую папку. Я рассматривал возможность замены исходной папки символической ссылкой на новую папку, но кажется, что если я продолжу эту практику, это может стать очень грязным очень быстро.
то, что я делал, - это вручную изменить символические ссылки, чтобы указать на новую папку, но я, возможно, пропустил пару.
есть ли способ проверить, есть ли какие-либо символические ссылки, указывающие на определенную папку?
8 ответов:
Я бы использовал команду find.
find . -lname /particular/folder
это будет рекурсивно искать текущий каталог для символических ссылок на
/particular/folder
. Обратите внимание, что он будет находить только абсолютные символические ссылки. Аналогичная команда может быть использована для поиска всех символических ссылок, указывающих на объекты, называемые "папка":find . -lname '*folder'
оттуда вам нужно будет отсеять любые ложные срабатывания.
вы можете проверять символические ссылки с помощью the
symlinks
программа написано Mark Lord -- он будет сканировать всю файловую систему, нормализовать пути символических ссылок до абсолютной формы и распечатать их в stdout.
на самом деле нет никакого прямого способа проверить такие символические ссылки. Считайте, что у вас может быть файловая система не монтируется все время (например. внешний USB-накопитель), который может содержать символические ссылки на другой том в системе.
вы могли бы сделать что-то с:
for a in `find / -type l`; do echo "$a -> `readlink $a`"; done | grep destfolder
Я отмечаю, что FreeBSD-это
find
не поддерживает-lname
вариант, именно поэтому я в конечном итоге с выше.
помимо просмотра всех других папок, если есть ссылки, указывающие на исходную папку, я не думаю, что это возможно. Если это так, мне было бы интересно.
для жестких ссылок вы можете получить индекс вашего каталога с одним из параметров "ls" (
-i
, Я думаю).тут
find
С-inum
найдет все общие жесткие ссылки.для softlinks, возможно, вам придется сделать
ls -l
на всех файлах, которые ищут текст после "- > " и нормализуют его, чтобы убедиться, что это абсолютный путь.