ShellScript

Imagen de fitog
0 puntos

Hola a todos:

Necesito generar un script que me busque en varios directorios, y en el caso que encuentre algun archivo que no tenga la extension *.err, ejecutar un comando, al que le paso dos parametros. Una vez hecho eso, ya no tengo que seguir con la busqueda. De momento he hecho esto, pero no funciona bien:

<code>

#! /bin/sh

parametro1 = $1;
parametro2 = $2;

find /directorio1/ -not -name "*.err" -exec comando ${parametro1} ${parametro2};

find /directorio2/ -not -name "*.err" -exec comando ${parametro1} ${parametro2};

</code>

Que opinais?

Gracias

Imagen de slap
+1
0
-1

Hola.
No entiendo muy bien lo que quieres hacer.

¿El script debe ejecutar el comando con los dos parámetros en todos los ficheros que encuentre que no acaben en .err?

Si es así, esto funcionaría:

find /dir1/ ! -name '*.err' ! -type d -exec touch {}.$1 \;

El "! -type d" es necesario para que no tenga en cuenta al directorio en sí.

El comando que ejecuto en el ejemplo: "touch {}.$1" lo que hace es:
para cada archivo que coincida con el patrón buscado, crea otro archivo con el mismo nombre pero añadiendole la extensión: .(valorparámetro1)

Adáptalo a lo que necesites. Ten en cuenta que el {} se reemplaza por el nombre del fichero encontrado por find.

¿O lo que quieres decir es que una vez encontrado un fichero que no acabe en .err y se haya ejecutado el comando con los dos parámetros ya no se haga nada más aunque existan más ficheros que no acaben en .err ?

En ese caso, deberías usar algo así:

for i in `find /dir1/ ! -name '*.err' ! -type d`; do
  touch $i.$1
  break
done

El comando: touch $i.$1 sólo se ejecutará para el primer archivo que coincida con el patrón buscado y nada más.

Saludos.
slap

+1
0
-1

Saludos.

0000 start out (+FD),A
           ld  BC, +7FFF
           jp 03CB, RAM-CHECK

http://www.injiniero.es