¿Cómo mover archivos dejando enlaces simbólicos?

9

¿Cómo puedo mover / copiar archivos de un directorio a otro, dejando los enlaces simbólicos en el directorio original ? Sé que ln -screa enlaces simbólicos en el destino, pero quiero dejar los enlaces simbólicos en el directorio de origen y mover los archivos reales a uno nuevo. ¿Cómo puedo hacer esto?

deox
fuente
La mejor respuesta a esta pregunta está aquí: unix.stackexchange.com/a/228166/7000
Sridhar Sarnobat

Respuestas:

4

Procese los archivos individualmente, por ejemplo,

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

o, si está copiando, reemplace la mvlínea de comando con

    cp ./$i $new_directory/  
    rm ./$i   
Waltinator
fuente
1
La versión cp / rm: ¿cuáles son sus posibles beneficios? Parece que hace lo mismo mucho más lento :)
Sergey
@Sergey One podría verificar el estado de salida cpy proceder a eliminar solo si fue exitoso.
lgarzo
@lgarzo: Eso sería valioso si mvno se verifica si la copia se realizó correctamente antes de eliminar el archivo, pero eso sería un error grave en mv:)
Sergey
¿Son "$ new_directory" y "<files to process>" "variables especiales", donde el último argumento que le doy al script siempre se considerará "$ new_directory" y los argumentos iniciales se consideran "<files to process>" ?. ¿Esto se aplica a cualquier otro script que escriba? ¿O estás insinuando que debo completar los espacios en blanco, como usar "$ 1" y "$ 2"? Perdón por la pregunta, pero soy muy nuevo en la codificación en general.
desox
1
Reemplace $original_directoryy $new_directorycon los directorios que desea mover de / a, o configúrelos así original_directory=/home/walt/from. Para usar en scripts, debe analizar los argumentos usted mismo. Ver las getopts incorporado en man bash.
waltinator