Comment déplacer des fichiers en laissant des liens symboliques derrière?


9

Comment puis-je déplacer / copier des fichiers d'un répertoire à un autre, en laissant les liens symboliques dans le répertoire d'origine . Je sais que ln -scrée des liens symboliques dans la destination, mais je veux laisser les liens symboliques dans le répertoire source et déplacer les fichiers réels vers un nouveau. Comment puis-je faire ceci?


La meilleure réponse à cette question est ici: unix.stackexchange.com/a/228166/7000
Sridhar Sarnobat

Réponses:


4

Traitez les fichiers individuellement, par exemple,

cd $original_directory  
for i in <files to process> ; do  
    mv ./$i $new_directory/  
    ln -s $new_directory/$i ./$i
done

ou, si vous copiez, remplacez la mvligne de commande par

    cp ./$i $new_directory/  
    rm ./$i   

1
La version cp / rm - quels en sont les avantages possibles? On dirait que ça fait la même chose que beaucoup plus lentement :)
Sergey

@Sergey One n'a pu vérifier l'état de sortie de cpet procéder à la suppression que s'il a réussi.
lgarzo

@lgarzo: Cela serait utile si vous mvne vérifiez pas si la copie a réussi avant de supprimer le fichier - mais ce serait un bug sérieux dans mv:)
Sergey

Sont "$ nouveau_répertoire" et "<fichiers à traiter>" "variables spéciales", où le dernier argument que je donne au script sera toujours considéré comme "$ nouveau_répertoire" et quels que soient les arguments initiaux considérés comme "<fichiers à traiter>"?. Est-ce que cela s'applique à tout autre script que j'écris? Ou voulez-vous dire que je devrais remplir les blancs, comme utiliser "$ 1" et "$ 2"? Désolé pour la question, mais je suis très nouveau dans le codage en général.
deox

1
Remplacez $original_directoryet $new_directorypar les répertoires que vous souhaitez déplacer de / vers, ou définissez-les comme ceci original_directory=/home/walt/from. Pour une utilisation dans des scripts, vous devez analyser les arguments vous-même. Voir les getopts builtin dans man bash.
waltinator
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.