Existuje způsob, jak napsat find
takže se přeruší, pokud jeden z -exec
operace se souborem selžou?
Např. (javac
se pohodlně používá jako program, který může vrátit návratový kód 1 u některých souborů a bez dalšího důvodu):
$ 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
Ve výše uvedeném příkladu, ačkoli exec
v souboru A.java
selhal (a vrátil návratový kód 1), find
příkaz pokračoval a zkompiloval soubor B.java
také. Existuje způsob, jak se vymanit z find
nebo bych měl použít nějakou formu for
místo toho?
Moje verze find:
$ find -version | head -1
find (GNU findutils) 4.4.2
Přijatá odpověď:
Alespoň s GNU find
můžete použít:
find ... -exec ... -o -quit