Consider the following:
/tmp/tmp.DkL0R4v7RR$ find . -regex '\./spam' -o -regex '\./eggs'
./spam
./eggs
/tmp/tmp.DkL0R4v7RR$ find . -regex '\./spam' -o -regex '\./eggs' -exec ls \{} \;
./eggs
/tmp/tmp.DkL0R4v7RR$ find . -regex '\./spam' -o -regex '\./eggs' | xargs ls
./eggs ./spam
Why does the appended -exec alter the behaviour so that only the second regex is matched?