Come spostare i file lasciandosi dietro i link simbolici?


9

Come posso spostare / copiare i file da una directory all'altra, lasciando i collegamenti simbolici nella directory originale . So che ln -screa collegamenti simbolici nella destinazione, ma voglio lasciare i collegamenti simbolici nella directory di origine e spostare i file effettivi in ​​uno nuovo. Come posso fare questo?


La migliore risposta a questa domanda è qui: unix.stackexchange.com/a/228166/7000
Sridhar Sarnobat

Risposte:


4

Elaborare i file singolarmente, ad es.

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

oppure, in caso di copia, sostituire la mvriga di comando con

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

1
La versione cp / rm: quali sono i possibili vantaggi? Sembra che faccia lo stesso solo molto più lentamente :)
Sergey

@Sergey Uno potrebbe controllare lo stato di uscita di cpe procedere alla rimozione solo se ha avuto successo.
lgarzo,

@lgarzo: Sarebbe utile se mvnon si verificasse se la copia è riuscita prima di eliminare il file - ma sarebbe un grave bug in mv:)
Sergey,

"$ New_directory" e "<file da elaborare>" "variabili speciali", dove l'ultimo argomento che fornisco allo script saranno sempre considerati "$ new_directory" e qualunque argomento iniziale sia considerato "<file da elaborare>" ?. Questo vale per qualsiasi altro script che scrivo? O stai insinuando che dovrei riempire gli spazi vuoti, come usare "$ 1" e "$ 2"? Ci scusiamo per la domanda, ma sono molto nuovo nella programmazione in generale.
Deox,

1
Sostituisci $original_directorye $new_directorycon le directory che vuoi spostare da / a, o impostale in questo modo original_directory=/home/walt/from. Per l'uso negli script, è necessario analizzare gli argomenti da soli. Vedi le getopts incorporato in man bash.
Waltinator,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.