¿Hay alguna forma de escribir un find? para que se rompa si uno de los -exec las operaciones fallan en un archivo?
P.ej. (javac se usa convenientemente como un programa que puede devolver un código de salida de 1 en algunos archivos y por ningún otro motivo):
$ echo "public classXX A{}" >> A.java
$ echo "public class B{}" >> B.java
$ find . -iname \*.java -exec javac {} \;
./A.java:1: error: class, interface, or enum expected
public classXX A{}
^
1 error
En el ejemplo anterior, aunque el exec en el archivo A.java falló (y devolvió un código de salida de 1), el find el comando procedió y compiló el archivo B.java así como. ¿Hay alguna forma de salir de find? o debería usar alguna forma de for en su lugar?
Mi versión de encontrar:
$ find -version | head -1
find (GNU findutils) 4.4.2
Respuesta aceptada:
Al menos con GNU find puedes usar:
find ... -exec ... -o -quit