CentOS 7 -> 发现:“-exec” 缺少参数

CentOS 7 -> 发现:“-exec” 缺少参数

免责声明:我完全是 Linux 业余爱好者。嗨,我目前正在 CentOS 7 上设置 PHPIPAM 服务器。我遵循以下指南:https://hostadvice.com/how-to/how-to-install-phpipam-on-centos-7/,它告诉我运行命令:“

find . -type f -exec chmod 0644 {} ;

当我这样做时,出现以下消息:

发现:“-exec”缺少参数。

出现。我该怎么做才能使命令起作用?

答案1

通常,它;充当命令之间的分隔符。但是,对于find -exec它,需要将其作为命令本身的实际参数提供(以指示 -exec 选项的结束位置)。为此,需要将其括起来或转义:

-exec ..... \;

-exec ..... ";"

-exec ..... ';'

答案2

当我这样做时,出现了这样的信息:“find:缺少“-exec”的参数。”

find . -type -exec chmod 0644 {} ;

您在行尾的\the 之前缺少 a (在您引用的链接中缺少该 a )。;

此外,您还没有提供论据-type

你的命令应该是:

find . -type f -exec chmod 0644 {} \;

-type c文件类型为 c ,如下所示:

b块(缓冲)特殊

c字符(无缓冲)特殊

d目录

p命名管道(FIFO)

f常规文件

l符号链接;如果 -L 选项或 -follow 选项有效,则这永远不会成立,除非符号链接已损坏。如果要在 -L 有效时搜索符号链接,请使用-xtype.

s插座

D门(Solaris)

来源查找手册页 - Linux - SS64.com

答案3

其他答案解释了问题发生的原因,但还有另一种解决方案。您可以使用+而不是\;,这样您就不必担心转义;。对于像chmod大量文件这样的操作,这也可能会更快一些。您可以像这样运行它:

find . -type f -exec chmod 0644 {} +

不过,它们并不完全相同。使用+命令find将多个文件作为单独的参数传递给 的单个调用chmod。许多程序可以很好地处理这个问题,但有些程序不能。如果您要传递给的程序-exec需要一次只接受 1 个文件参数,那么您必须改用\;

相关内容