J'ai un arbre de répertoire qui a un tas de liens symboliques vers des fichiers sous /home
... cependant, je me suis déplacé /home
vers /mnt/home
et j'ai besoin d'un moyen de "relier" tous les liens symboliques. Une telle fonctionnalité existe-t-elle ou dois-je écrire un script pour le faire?
Par exemple, j'ai quelque chose comme ce qui suit:
[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
Je veux une commande qui trouvera tous les liens symboliques et reliera aux mêmes endroits mais en dessous /mnt/home
au lieu de/home
Une telle commande existe-t-elle?
la source
/mnt
un chemin à un chemin; vous n'avez besoin d'aucune opération de chaîne plus sophistiquée que la concaténation.Je sais que ce n’est pas exactement ce que l’auteur demande, mais il semble qu’ils aient déjà leur réponse; j’ajoute donc cette précision aux personnes qui, comme moi, tombent sur la question.
Ce qui suit devrait vous aider si une solution plus flexible est requise, par exemple avoir un ensemble de liens symboliques brisés qui peuvent être corrigés en remplaçant une partie des cibles du lien symbolique.
par exemple. Après un changement de nom d'utilisateur, remplacez l'ancien nom d'utilisateur par le nouveau nom d'utilisateur dans la cible de nombreux liens, une fois le déplacement effectué. Créez un script appelé replace-simlinks ci-dessous:
et appelez-le avec la commande suivante:
J'espère que cela aidera quelqu'un
edit: Merci Gilles pour le kickstart sur ce script et le conseil sur l’utilisation du script des liens symboliques pour rendre les liens relatifs.
la source
target=${target/"/home"/"/mnt/home"}
Très utile, cependant. Merci.Créez en
/home
tant que lien symbolique vers/mnt/home
, et tous les liens symboliques existants seront à nouveau valides.la source