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