The find man page might benefit from adding a little bit more user-friendly hand-holding here:
Index: find.1 =================================================================== RCS file: /cvs/src/usr.bin/find/find.1,v retrieving revision 1.98 diff -u -r1.98 find.1 --- find.1 2 Sep 2019 21:18:41 -0000 1.98 +++ find.1 14 Aug 2020 02:59:48 -0000 @@ -231,6 +231,10 @@ .Qq {} appears anywhere in the utility name or the arguments it is replaced by the pathname of the current file. +The semicolon will likely have to be escaped, depending on the shell. +See +.Sx CAVEATS +below. .Pp If terminated by a plus sign, the pathnames for which the EXAMPLE: ======== $ find ~ -iname ".*" -exec echo {} \; works, but $ find ~ -iname ".*" -exec echo {} ; does not. (Yes, this is a contrived example. I wouldn't want to make people copy things all over the place.)