Unix - comando for

 
Vista:

comando for

Publicado por Ana (3 intervenciones) el 28/12/2016 17:09:33
Buenos días

Soy nueva en esto de hacer shell script, encontré un ejemplo en internet para buscar algunos archivos en un servidor, que se encuentran en la misma ruta, pero no tienen nombres iguales. Lo que encontré, segun entiendo, es crear un archivo que contenga la ruta de los archivos y con este hacer un script que encuentre estos archivos y luego los copie en la ruta que yo quiera.

1
2
3
4
5
6
7
#!/bin/bash/
# variables 
PATH_FILE=/respaldo_archivos
#Proceso
for  file  in  'cat ${PATH_FILE}/buscar_archivos.txt '  do
 find  /sicma/Upload -name $file  -exec  cp /respaldo_archivos \;
doned

este script lo guardé con la extension .sh lo coloque en el servidor y lo ejecute, pero me aparece este mensaje:


busca_archivos.sh: not found

No sé a que se deba este mensaje, ojalá alguien pueda orientarme para saber si voy por buen camino n la creacion de mi script.

saludos y buen día!!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve
Val: 35
Ha mantenido su posición en Unix (en relación al último mes)
Gráfica de Unix

comando for

Publicado por xve (70 intervenciones) el 28/12/2016 22:11:46
Hola Ana, como lo ejecutas...
seria algo así:
1
2
cd /path/...
sh busca_archivos.sh
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de SuperIndio
Val: 15
Ha mantenido su posición en Unix (en relación al último mes)
Gráfica de Unix

comando for

Publicado por SuperIndio (8 intervenciones) el 06/01/2017 18:28:20
para ejecutarlo sin invocar al shell desde la linea de comandos tendrias que cambiarles atributos/permisos con chmod asi:

1
chmod 777   busca_archivos.sh

y depues ejecutarlo

1
busca_archivos.sh <enter>

ese shell me parece un poco peligroso, porque copia archivos yo haria algo asi

1
2
3
4
5
6
7
#!/bin/ksh/
PATH_FILE=/respaldo_archivos
for FIFI in $(cat $PATH_FILE/buscar_archivos.txt|awk '{print $1}')
do
    find /sicma/Upload/ -name $FIFI -print
done
#  si los lista por pantalla y coniciden con lo que yo quiero copiar ahi recien aplico el -exec
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 21
Ha mantenido su posición en Unix (en relación al último mes)
Gráfica de Unix

comando for

Publicado por JAVIER (8 intervenciones) el 18/01/2017 14:51:56
la variabl de path que tienes en el archivo plano que recorres tienes ke tenerlo en la sentencia del find como segundo parametro, -name es el nombre del archivo y -type f es para que solo busque los archivos


1
2
3
4
5
6
7
8
9
10
11
#!/bin/bash/
# variables 
PATH_FILE=/respaldo_archivos
 
#Proceso
 
for  file  in  'cat ${PATH_FILE}/buscar_archivos.txt '  do
 
 find  $file -type f -name "*.txt"   -exec  cp /respaldo_archivos \;
 
doned


sería bueno que en el cp ocupes esta opción

--parents
use full source file name under DIRECTORY

que mantrendia la estructura de directorio del archivo origen hacia el destino, proque puedes tener varios archivos con el mismo nombre en distinos origenes y en el mismo destino se pisen.


saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar