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: