Re: [OT] Reemplazar enlaces por originales conservando el nombre del enlace
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
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
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
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
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; >