Re: [OT] Reemplazar enlaces por originales conservando el nombre del enlace

2015-10-21 Por tema listascor...@msjs.co
El 21/10/15 a las 12:45, fernando sainz escibió:
> El día 20 de octubre de 2015, 16:35, listascor...@msjs.co
>  escribió:
>>
>> Hola lista...
>>
>> He creado una carpeta temporal en el terminal
>> dircarp=`mktemp -d`
>>
>> Tengo un archivo fc1 con una lista, estilo:
>> enlacearchivo --- archivoenlazado
>> enlacearchivo --- archivoenlazado
>> enlacearchivo --- archivoenlazado
>>
>> Tengo este guión:
>>
>> #!/bin/bash
>> cat /home/usuario/fc1 | while read i; do
>> awk '{ print $1, $3}'
>> archivocarpeta="cd $dircarp; ls"
>> archivocarpeta2=$archivocarpeta
>> cp $3 $dircarp
>> mv $archivocarpeta2 $1
>> done
>>
>> Al ejecutar sale este mensaje de error:
>> cp: falta un fichero como operando
>> Pruebe 'cp --help' para más información.
>> mv: el objetivo «ls» no es un directorio
>> 1
>>
>> Lo que quiero es que el guión lea el archivo fc1 linea por linea y que
>> al leer en cada linea ejecute lo siguiente:
>> -copia el archivoenlazado de la columna 3 y lo envía a la carpeta temporal
>> -mueve el archivoenlazado de la carpeta temporal a la ruta del enlacearchivo
>>
>> Con eso busco reemplazar todos los enlaces (enlacearchivo) por el
>> archivo original (archivoenlazado), conservando el nombre del enlacearchivo
>>
>> Saludos,
>>
>>
> 
> No se muy bien lo que quieres hacer, pero echa un vistazo a comandos como
> readlink, basename que te pueden ser útiles.
> 
> Por ejemplo, esto te busca todos los enlaces simbólicos del directorio
> actual y te pinta
> el nombre del enlace y el nombre del fichero enlazado con ruta y sin ruta.
> 
> ---
> for a in $(find .  -maxdepth 1 -lname "*");
> do
> 
>   # y aquí hacer lo que quieras, copiar, mover, etc...
>   LINK=$a;
>   echo $LINK;
> 
>   FICHERO=$(readlink $LINK);
>   echo $FICHERO
>   echo $(basename $FICHERO);
> 
> done
> -
> 
> Por cierto este tipo de preguntas hay que ponerlas como off-topic
> [OT] en el asunto.
> 
> S2.
> 

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
...

Espero haberles ilustrado el asunto.

 Saludos,



Re: [OT] Reemplazar enlaces por originales conservando el nombre del enlace

2015-10-21 Por tema Manolo Díaz
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



Re: [OT] Reemplazar enlaces por originales conservando el nombre del enlace

2015-10-21 Por tema Manolo Díaz
El miércoles, 21 de octubre de 2015 a las 22:00 UTC+2
Manolo Díaz escribió:

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

La segunda línea del bucle es completamente inútil.

-- 
Manolo Díaz



[SOLUCIONADO] Re: [OT] Reemplazar enlaces por originales conservando el nombre del enlace

2015-10-21 Por tema listascor...@msjs.co
El 21/10/15 a las 14:57, Camaleón escibió:
> El Wed, 21 Oct 2015 11:52:22 -0500, listascor...@msjs.co escribió:
> 
>> El 21/10/15 a las 11:34, Camaleón escibió:
> 
> (...)
> 
 Quiero reemplazar user-trash.svg  por emptytrash.svg  manteniendo el
 nombre emptytrash.svg
>>>
>>> :-D
>>>
>>> Rediez, pues entonces es al revés (?). Ejecuta y manda la salida de:
>>>
>>> ls -l /home/usuario/.icons/Numix/128x128/places/
>>>
>> http://paste.debian.net/317322/
>> (ej: linea 94)
> 
> Lo he intentado adaptar al script anterior pero se me ha hecho tarde y no 
> lo he podido probar con archivos reales aunque al ejecutarlo no me ha 
> saltado ningún error (ojo, trabaja siempre sobre una copia de los 
> directorios/archivos, las pruebas siempre se hacen con gaseosa, nunca 
> sobre originales).
> 
> #!/bin/bash
> f=/home/usuario/fc1
> while read i; do
> var=$(echo "$i" | awk '{system("rm -fv "$1) system("cp -afv "$3 " "$1)}')
> done < "$f"
> 
> Saludos,
> 

Gracias Camaleón... le diste en toda la diana... su guión me sirve para
lo que quiero... también gracias a Manolo y a Fernando por sus valiosos
aportes

 Saludos debianitas;



Re: [SOLUCIONADO] Re: [OT] Reemplazar enlaces por originales conservando el nombre del enlace

2015-10-21 Por tema listascor...@msjs.co
El 21/10/15 a las 16:17, listascor...@msjs.co escibió:
> El 21/10/15 a las 14:57, Camaleón escibió:
>> El Wed, 21 Oct 2015 11:52:22 -0500, listascor...@msjs.co escribió:
>>
>>> El 21/10/15 a las 11:34, Camaleón escibió:
>>
>> (...)
>>
> Quiero reemplazar user-trash.svg  por emptytrash.svg  manteniendo el
> nombre emptytrash.svg

 :-D

 Rediez, pues entonces es al revés (?). Ejecuta y manda la salida de:

 ls -l /home/usuario/.icons/Numix/128x128/places/

>>> http://paste.debian.net/317322/
>>> (ej: linea 94)
>>
>> Lo he intentado adaptar al script anterior pero se me ha hecho tarde y no 
>> lo he podido probar con archivos reales aunque al ejecutarlo no me ha 
>> saltado ningún error (ojo, trabaja siempre sobre una copia de los 
>> directorios/archivos, las pruebas siempre se hacen con gaseosa, nunca 
>> sobre originales).
>>
>> #!/bin/bash
>> f=/home/usuario/fc1
>> while read i; do
>> var=$(echo "$i" | awk '{system("rm -fv "$1) system("cp -afv "$3 " "$1)}')
>> done < "$f"
>>
>> Saludos,
>>
> 
> Gracias Camaleón... le diste en toda la diana... su guión me sirve para
> lo que quiero... también gracias a Manolo y a Fernando por sus valiosos
> aportes
Nota: sugiero que para una próxima se utilice la expresión ”desenlazar o
desenlazar el enlace”, me parece que son las expresiones mas apropiadas
para el asunto.

> 
>  Saludos debianitas;
>