GNU/Linux >> Tutoriels Linux >  >> Linux

Sortir de la recherche si un -exec échoue ?

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

Linux
  1. Comment trouver la liste de tous les ports ouverts sous Linux

  2. Rechercher -exec + Vs Rechercher | Xargs :lequel choisir ?

  3. Découvrez les processus orphelins de Linux

  4. trouver -exec cmd {} + vs | xarg

  5. trouver -exec une fonction shell sous Linux ?

Comment trouver la version du noyau Linux en cours d'exécution sur votre PC

Comment savoir si ma carte sans fil prend en charge 5 GHz ?

Comment trouver quelle version de Java dans le dossier installé Java ?

Savoir si la bibliothèque est dans le chemin

Comment trouver la source d'un signal POSIX

Quelle est la bonne syntaxe find -exec