GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Brechen Sie von Find ab, wenn ein -exec fehlschlägt?

Gibt es eine Möglichkeit, einen find zu schreiben so dass es bricht wenn man die -exec Operationen schlagen bei einer Datei fehl?

Z.B. (javac wird praktischerweise als ein Programm verwendet, das bei einigen Dateien einen Exit-Code von 1 zurückgeben kann, und zwar aus keinem anderen Grund):

$ 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

Obwohl im obigen Beispiel die Datei exec auf die Datei A.java fehlgeschlagen ist (und einen Exit-Code von 1 zurückgegeben hat), find Befehl fortgesetzt und kompilierte Datei B.java auch. Gibt es eine Möglichkeit, aus find auszubrechen oder sollte ich irgendeine Form von for verwenden stattdessen?

Meine Version von find:

$ find -version  | head -1
find (GNU findutils) 4.4.2

Akzeptierte Antwort:

Zumindest mit GNU find Sie können verwenden:

find ... -exec ... -o -quit

Linux
  1. Welche Linux-Version verwende ich? So finden Sie es heraus

  2. Suchen -exec + Vs Finden | Xargs:Welche soll man wählen?

  3. Suchen und kopieren Sie die Datei mit Bash

  4. finde -exec eine Shell-Funktion in Linux?

  5. Linux ermittelt die Hyperthread-Core-ID

So finden Sie heraus, welche Version des Linux-Kernels auf Ihrem PC läuft

Suchen Sie JAVA_HOME und legen Sie es auf RHEL fest

Wie finde ich den Namensraum eines bestimmten Prozesses heraus?

Wie finde ich welche Java-Version im installierten Java-Ordner?

So finden Sie die Quelle eines POSIX-Signals heraus

Was ist die korrekte find -exec-Syntax