for f in $(find -type l);do cp --remove-destination $(readlink $f) $f;done;
- Vérifier les liens symboliques dans le répertoire courant et les sous-répertoires
find -type l
- Obtenir le chemin du fichier lié
readlink $f
- Supprimez le lien symbolique et copiez le fichier
cp --remove-destination $(readlink $f) $f
Il n'y a pas de commande unique pour convertir un lien symbolique en un fichier normal. Le moyen le plus direct est d'utiliser readlink
pour trouver le fichier vers lequel pointe un lien symbolique, puis copiez ce fichier sur le lien symbolique :
cp --remove-destination `readlink bar.pdf` bar.pdf
Bien sûr, si bar.pdf
est, en fait, un fichier normal pour commencer, cela encombrera le fichier. Une vérification de l'intégrité serait donc conseillée.
Juste une resucée des réponses des autres, mais en ajoutant le "contrôle de cohérence" pour s'assurer que le lien transmis est en fait un lien symbolique :
removelink() {
[ -L "$1" ] && cp --remove-destination "$(readlink "$1")" "$1"
}
Cela signifie que si le fichier est un lien symbolique, exécutez la commande de copie.