"Find is looking for
\;
or \+
, but reads |
." – This statement is wrong. find
does not see the |
at all, the shell uses it to build the pipe first. And find -exec
does not look for \;
or \+
, it demands ;
or +
. We need to type \;
to protect the semicolon from being interpreted by the shell as a command terminator (see the beginning of this answer).