-exec 带有 '{}' ';' 和 -exec 带有 {} /; 之间有什么区别?

-exec 带有 '{}' ';' 和 -exec 带有 {} /; 之间有什么区别?

在尝试编写一些 bash 脚本时,我遇到了 -exec 参数的各种用法。在我的上下文中,我在 find 命令之后使用它。

本指南指出在 exec 之后使用 {} /; 来传递文件名并转义 ; 以便命令正确终止。

此论坛帖子显示使用 '{}' ';' 而不是 {} /;。

我在 Ubuntu 11.04 上尝试了这两种方法,只有带单引号的方法可以正常工作。Linux 版本之间是否存在差异导致这种情况?它们可以互换吗?是否有一种优于另一种?

答案1

您的 shell 可能会为该序列赋予{}特殊含义(取决于 shell 的类型,甚至取决于您是否在 shell 脚本中)。为了避免这种情况,您可以将其括在引号中'{}'或像这样对其进行转义:(\{\}您需要使用反斜杠,而不是像问题中那样使用\正斜杠)。/

还要注意,如果你操作错误(例如,如果你使用;而不是\;),通常的错误消息是:

find: missing argument to -exec

另请参阅find的手册页

相关内容