MSfree hat geschrieben: 17.11.2022 13:57:26
Das war also praktisch schon immer so.
Mhh ich komm erst 30 jahre später drauf
heisenberg hat geschrieben: 17.11.2022 13:56:08
Ich würde sagen, jedes Element wird mit jedem anderen logisch verknüpft. Vorgabe ist : and. Außerdem bindet and stärker als or. Das erklärt das Verhalten.
Das klingt logisch und ich hab zumindest herausgefunden, dass find mehrere -exec unterstüzt und man kann tatsächlich sowas machen:
Code: Alles auswählen
find . -iname \*.jpg -exec other_command {} + -o -iname \*.jpeg -exec jpeginfo -c {} +
EDIT: ich glaub ich weiß wieso das so ist. -exec wird offenbar wie eine ganz normale expression behandelt nur schaltet es gleichzeitig die ausgabe der funde aus. Man kann nämlich auch -exec als weiteren test verwenden, ob files eingeschlossen werden sollen oder nicht:
Code: Alles auswählen
find . \( \( -iname \*.jpg -exec false \; \) -o \( -iname \*.jpeg -exec true \; \) \) -print
dH
eigentlich verwende ich es falsch. Besser wäre wohl mit -print0 und xargs -0 zu arbeiten... Damit stellt man sicher das alle funde an das Program übergeben werden, ohne das zB ein Fehler des Programs find abbrechen lässt. Die Fehlerbehandlung schiebt man dann einfach weiter, was zB in meinem Fall Sinn macht (aber nicht immer so sein muss)