El Tue, 20 Oct 2015 09:35:31 -0500, 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
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