[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Reemplazar enlaces por originales conservando el nombre del enlace



El 20/10/15 a las 18:22, listascorreo@msjs.co escibió:
> El 20/10/15 a las 11:41, Camaleón escibió:
>> El Tue, 20 Oct 2015 09:35:31 -0500, listascorreo@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
>>
>> Pista: si ejecutas el script en modo de depuración (sh -x script.sh) vas 
>> viendo los valores que toman las variables, la ejecución de los comandos 
>> y su resultado...
>>
>>> 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
>>
>> Lo que no pillo es por qué "copiar y mover", dos acciones sobre el mismo 
>> archivo cuando puedes hacerlo con una (copiar "archivoenlazado" a la ruta 
>> de "enlacearchivo") :-?
>>
>> #!/bin/bash
>> f=/home/usuario/fc1
>> while read i; do
>> var=$(echo "$i" | awk '{system("cp " $3 " "$1)}')
>> done < "$f"
>>
> El guión no sirvió, sale este mensaje:
> 
> cp: «/home/usuario/.icons/Numix/apps/24/system-file-manager.png» y
> «/home/usuario/.icons/Numix/apps/24/nautilus.png» son el mismo fichero
> 
> los enlaces siguen existiendo... y lo que busco es reemplazar todos los
> enlaces (enlacearchivo) por el
> archivo original (archivoenlazado), conservando el nombre del
> enlacearchivo; es decir, que no me quede ningún enlace dentro del
> directorio Numix.
> 
> Saludos,
> 
>> 

Saludos

Intenté con este otro y tampoco.

#!/bin/bash

dircarp="/home/usuario/w"
cat /home/usuario/fc111 | while read i; do
arch1=$(awk '{ print $1}')
arch1a=$arch1
arch2=$(awk '{ print $3}')
arch2a=$arch2

archivocarpeta="cd $dircarp; ls"
archivocarpeta2=$archivocarpeta
cp $arch2a $dircarp
mv $archivocarpeta2 $arch2a

done

sale:
cp: falta el fichero de destino después de «/home/usuario/w»
Pruebe 'cp --help' para más información.
mv: el objetivo «ls» no es un directorio
1



Reply to: