I typically prefer the -0 xargs method:
find ... -print0 | xargs -0r rm -rf
This does, however only work with commands which take one or multiple arguments till the end of the line. But it is quite safe as it takes any binary junk in the file name and present it as nicely separated arguments. It also avoids having to remeber this {} syntax. It also reduces the number of child executions. The -r option is needed in the GNU variant to make sure it does not call the command if no match is found. For FreeBSD it is ignored (as it is the default).
In your case, there is also a -delete action for GNU find:
find ... -delete
If you insist on using the escape method, then it would be:
find ... -exec /bin/rm -rf "{}" \;
Or if using GNU find, you can be a bit more efficient with:
find ... -exec /bin/rm -rf "{}" +
And just to be sure, use -ok :)
touch test1 test2 test3
find . -type f -ok rm -rf "{}" +
"rm -rf ./test1 ./test2 ./test3"? y
And to answer your question: no you don't have to escape the commands options. If it does not work, your problem is somewhere else, must likely in the startdir & search pattern. Try without output redirection and using -print or -ok to debug.
find -execwhich is interpreted as the name of the command, remove the quotes, tokens after-execare interpreted asutility, followed byarguments, no further expansion or interpretation by the shell.