Re: [OT] Reemplazar enlaces por originales conservando el nombre del enlace
El miércoles, 21 de octubre de 2015 a las 19:29 UTC
listascorreo@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
Reply to: