Miss Erwartung in voller Schönheit.
Grund des Verhaltens:
1. Zwischen dem zweiten -iname und dem -exec steht kein Operator
2. Wegen des fehlenden Operators wird implizit ein AND angenommen
(so also ob es
1 | find ../mplab -iname "*.c" -or -iname "*.h" -a -exec echo {} . \;
|
hieße)
3. AND hat eine höhere Priorität als OR bei find
4. Dadurch entspricht das dem Ausdruck:
1 | find ../mplab -iname "*.c" -or "(" -iname "*.h" -a -exec echo {} . \; ")"
|
Lösung: Richtig klammern!
1 | find ../mplab "(" -iname "*.c" -or -iname "*.h" ")" -a -exec echo {} . \;
|
(wobei das -a jetzt auch wieder weg gelassen werden kann, weil es
ja implizit eingefügt werden würde)