У меня есть дерево каталогов, в котором есть куча символических ссылок на файлы в /home
... однако я перешел /home
на /mnt/home
и мне нужен способ "связать" все символические ссылки . Существует ли такая функциональность или мне нужно написать скрипт для этого?
В качестве примера у меня есть что-то вроде следующего:
[root@trees ~]# ls -l /mnt/home/someone/something
total 4264
lrwxrwxrwx 1 jnet www-data 55 2011-08-07 13:50 a -> /home/someone/someotherthing/a
lrwxrwxrwx 1 jnet www-data 55 2011-08-07 13:50 b -> /home/someone/someotherthing/b
lrwxrwxrwx 1 jnet www-data 55 2011-08-07 13:50 c -> /home/someone/someotherthing/c
lrwxrwxrwx 1 jnet www-data 55 2011-08-07 13:50 d -> /home/someone/someotherthing/d
lrwxrwxrwx 1 jnet www-data 55 2011-08-07 13:50 e -> /home/someone/someotherthing/e
/mnt/home/someone/something/subdir:
total 4264
lrwxrwxrwx 1 jnet www-data 55 2011-08-07 13:50 a -> /home/someone/someotherthing/subdir/a
lrwxrwxrwx 1 jnet www-data 55 2011-08-07 13:50 b -> /home/someone/someotherthing/subdir/b
lrwxrwxrwx 1 jnet www-data 55 2011-08-07 13:50 c -> /home/someone/someotherthing/subdir/c
lrwxrwxrwx 1 jnet www-data 55 2011-08-07 13:50 d -> /home/someone/someotherthing/subdir/d
lrwxrwxrwx 1 jnet www-data 55 2011-08-07 13:50 e -> /home/someone/someotherthing/subdir/e
Я хочу команду, которая будет находить все символические ссылки и ссылаться на те же места, но под /mnt/home
вместо/home
Существует ли такая команда?
источник
/mnt
в добавлении к пути; вам не нужна более сложная строковая операция, чем конкатенация.Я знаю, что это не совсем то, что запрашивает автор, но, похоже, у них уже есть свой ответ, поэтому я добавляю это для других, таких как я, которые наткнулись на вопрос.
Следующее должно помочь, если требуется более гибкое решение, такое как наличие множества неработающих символических ссылок, которые можно исправить, заменив часть целей символической ссылки.
например. После изменения имени пользователя заменить старое имя пользователя новым именем пользователя в качестве цели для многих ссылок после того, как перемещение уже было сделано. Создайте скрипт под названием replace-simlinks, показанный ниже:
и вызовите его с помощью следующей команды:
Надеюсь, это поможет кому-нибудь
edit: Спасибо Gilles за кикстарт этого скрипта и подсказку об использовании скрипта символических ссылок, чтобы сделать ссылки относительными.
источник
target=${target/"/home"/"/mnt/home"}
Очень полезно, хотя. Благодарю.Создайте
/home
как символическую ссылку/mnt/home
, и все существующие символические ссылки снова будут действительны.источник