El miércoles, 21 de octubre de 2015 a las 19:29 UTC
listascor...@msjs.co escribió:

> Leyendo de nuevo, es posible que haya cometido una breve equivocación y
> de ser así pido disculpas.
> Este tema genera una pequeña confusión mental que hay que saber
> detectarla para poder entender el asunto... y trataré de desenredarla.
> 
> Los invito a que hagamos el siguiente ejercicio mental:
> 
> Tengo 2 ficheros:
> 
> nombre del fichero 1 (enlace): azul-claro
> contenido del fichero 1: imagen azul clara
> 
> nombre del fichero 2: azul-celeste
> contenido del fichero 2: imagen azul clara
> 
> 
> El fichero azul-claro es un enlace al fichero azul-celeste
> 
> Quiero ¿desenlazar? el fichero azul-claro por el fichero azul-celeste
> manteniendo el nombre del fichero azul-claro
> 
> Resultado:
> 
> nombre del fichero 1: azul-claro
> contenido del fichero 1: imagen azul clara
> 
> nombre del fichero 2: azul-celeste
> contenido del fichero 2: imagen azul clara
> 
> 
> Nota: en el archivo ”fc1” es una lista, estructurada así:
> enlace ----- destino-del-enlace
> enlace ----- destino-del-enlace
> enlace ----- destino-del-enlace
> ...

Al igual que Fernando, yo me olvidaría de ese fichero con el listado.

Sea DIR_ENLACES la variable que contiene la ruta hasta el directorio
con los enlaces simbólicos.

# hacemos una copia de seguridad del directorio
mv $DIR_ENLACES $DIR_ENLACES.bak
mkdir $DIR_ENLACES

# Este bucle supone que las rutas no contiene espacios.

cd $DIR_ENLACES.bak
for i in *
do
        ORIG=$(readlink -m $i)
        BASENAME=$(basename $ORIG)
        cp $ORIG $DIR_ENLACES/$i
done



Al acabar debes tener:
-       El directorio de copias de seguridad con los enlaces
-       El antiguo directorio con los ficheros enlazados intactos
-       El que fuera el directorio de enlaces ahora contiene lo que
        quieres.

Nota: no lo he probado. Antes de ejecutar cambia la tercera línea del
cuerpo del bucle por
        echo cp $ORIG $DIR_ENLACES/$i
a modo de prueba en dique seco.

Suerte.
-- 
Manolo Díaz

Responder a