J'avais des dossiers avec de nombreux liens symboliques. Malheureusement, après avoir copié cela autour de différents systèmes de fichiers, ils se sont transformés en fichiers de texte brut avec le lien cible comme contenu. C'est:
Avant
$ ll link
... link -> /path/to/target
Après
$ cat link
/path/to/target
Quel est le moyen le plus simple de restaurer ce lien? Peut-être un one-liner ou un script shell.
Supposons que j'ai des centaines de liens comme celui-ci, y at-il un moyen de les restaurer tous, sans exécuter manuellement le correctif sur chacun d'eux?
linux
symbolic-link
ln
congusbongus
la source
la source
debugfs
. Essayez de ne pas causer trop de dégâts ...debugfs
n'est absolument pas le bon outil à utiliser ici.Réponses:
Utilisez cette commande:
Remplacez
ls *txt
par quelque chose qui va générer la liste des fichiers texte qui doivent être des liens symboliques. Par exemple,find . -name "*txt"
listerait tous les fichiers * txt dans ou sous le répertoire actuel.la source
Essaye ça:
comme dans la réponse de wingedsubmariner,
ls *
devrait être remplacé par quelque chose qui listera exactement les fichiers que vous vouliez.Je trouve le
construire très utile. Comme je le sais, c’est la bonne façon de gérer tous les noms de fichiers. Par exemple, si un nom de fichier contient des espaces, "$ f" fonctionnera toujours (contrairement à avec
for f in $(ls *); do...done
).FYI: $ (cmd) est identique à
cmd
mais il peut être imbriqué contrairement à ``.la source