GNU/Linux >> Znalost Linux >  >> Linux

Vymanit se z hledání, pokud selže -exec?

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

Linux
  1. Najít -exec + Vs Najít | Xargs:Který si vybrat?

  2. najít a zkopírovat soubor pomocí Bash

  3. najít -exec funkci shellu v Linuxu?

  1. Jak zjistit seznam všech otevřených portů v Linuxu

  2. Jak zjistit jmenný prostor konkrétního procesu?

  3. Jak zjistit, kterou verzi Javy ve složce nainstalované Javy?

  1. Získání možnosti -exec v aplikaci Najít do práce?

  2. Manipulovat {} Vrátit řetězec z Find -exec?

  3. Zjistěte osiřelé procesy Linuxu