Existe-t-il un moyen d'écrire un find de sorte qu'il se casse si l'un des -exec les opérations échouent sur un fichier ?
Par exemple. (javac est commodément utilisé comme un programme qui peut renvoyer un code de sortie de 1 sur certains fichiers et pour aucune autre raison) :
$ 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
Dans l'exemple ci-dessus, bien que le exec sur le fichier A.java a échoué (et a renvoyé un code de sortie de 1), le find la commande s'est déroulée et a compilé le fichier B.java aussi bien. Existe-t-il un moyen de sortir de find ou devrais-je utiliser une forme de for à la place ?
Ma version de find :
$ find -version | head -1
find (GNU findutils) 4.4.2
Réponse acceptée :
Au moins avec GNU find vous pouvez utiliser :
find ... -exec ... -o -quit