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

Re: Reemplazar enlaces por originales conservando el nombre del enlace



El día 20 de octubre de 2015, 16:35, listascorreo@msjs.co
<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
>
> 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.


Reply to: