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