43 votes

Remplacer les liens symboliques par des fichiers

Y a-t-il un moyen facile de remplacer tous les liens symboliques par le fichier auquel ils se lient ?

3voto

Diego Points 145
trouver ./ -type l -print0|xargs -0 -n1 -i sh -c 'cp --remove-destination $(readlink "{}") "{}" '

basé sur https://superuser.com/a/1301199/499386 de MastroGeppetto

2voto

blahdiblah Points 4225
trouver . -type l -exec cp --dereference --recursive '{}' '{}'.dereferenced \;

Créera une copie de chaque fichier/dossier lié symboliquement dans .dereférencé, ce qui est plus sûr (mais moins pratique) que de les remplacer directement. Le déplacement des données copiées vers les noms des liens symboliques est laissé en exercice pour le lecteur.

2voto

Antonio Points 21

En utilisant certaines des idées précédentes, la commande suivante remplacera de manière récursive chaque lien symbolique par une copie de l'original :

find . -type l -exec bash -c "echo 'Remplacement de {} ...';  cp -LR '{}' '{}'.dereferenced;  rm '{}';  mv '{}'.dereferenced '{}'" \;

2voto

X.Creates Points 121
pour f dans *; faire cp --remove-destination $(readlink "$f") "$f"; fin

1voto

xaocon Points 21

Beaucoup de bonnes réponses là-bas mais comme vous cherchiez quelque chose de facile

for i in *; do link=$(readlink $i) && rm $i && mv $link $i; done

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X