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