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

Re: Reemplazar enlaces por originales conservando el nombre del enlace



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"

Saludos,

-- 
Camaleón


Reply to: