Do the parenthesis have to be quoted on find command actions?

The example in the book "Linux Command Line" by William Shotts have the syntax for user-defined actions on find command as: -exec command'{}' ';' to prevent expansion in shell but pretty much everywhere I see the syntax as -exec command {} \;. Can anyone explain the difference?


Solution 1:

This answer is slightly misleading. check Kamil Maciorowski's comment.

The easiest way to find out will be to use echo command. You can check what commands/programs receive after shell expansion.

$  echo {}
outputs: {}

$  echo '{}'
outputs: {}

$ echo \{\}
outputs  {}

so there is no real difference between them. one can use either way.

In fact one can mix and match all of them in a single command. the find commands "sees" the same thing.

-exec echo {} '{}' \{\} \;

This isn't true for the ; though.

$   echo ;
outputs: # nothing

$   echo ';'
outputs: ;

$   echo \;
outputs: ;