查找:Cygwin 中缺少“-exec”参数

查找:Cygwin 中缺少“-exec”参数

我正在尝试从component文件夹中获取 HTML 文件并构建新component文件夹,并尝试将该component(新)文件夹插入build到我正在使用给定代码的文件夹中:

find components -iname '*.html' -exec rsync -R {} ./build/ \\;

但是当我这样做时,我收到了给定的错误:

find: missing argument to -exec

请给我一些解决方案来解决这个问题?

答案1

问题最初的表述有两个问题:

  1. 用 执行的命令-exec必须由 终止;
  2. 命令rsync格式错误(或曾是,相反,在原问题)。

这就是我思考你可能想要:

find components -iname "*.html" -exec rsync -R {} ./build/ ';'

要与您一起复制文件,rsync您必须说出要复制的位置。在这里,我假设您要将所有找到的文件复制到./build/.

问题更新后:

执行的命令必须由受 shell 保护的 - 字符find终止。;保护 免受;shell 影响的正确方法是使用 或 来引用\;';'

由于您正在使用\\;,因此您“撤消”了对 的引用;,而该find过程只会看到一个终止的\。由于它看不到任何内容;,它会抱怨缺少参数。

npm在某处提到过。这是 JavaScript 的包管理器。既然您提到了这一点,它让我相信您不是find从命令行运行,而是从某种脚本运行。根据该脚本语言的特定语法和句法规则,引用(可能)与脚本内的工作方式不同。

要正确解决此问题,最有帮助的是find在调用它的脚本上下文中查看实际调用。

在使用此信息更新问题之前,我在这里给出的答案是任何人都能得到的最接近的答案。


¹(或者";"更奇特的形式,例如$';'$'\u003b'取决于外壳,';'是最便携的)

答案2

如果从标准运行MS-DOS命令提示符使用西格温二进制的查找程序,可能只是你不需要逃避最后的‘' (因为解释命令行的不是 sh/bash/... 而是 DOS,其中 ';' 不是特殊字符):

所以我会尝试:

find components -iname "*.html" -exec rsync -R {} ./build/ ;

答案3

的正确格式find是:

find components -iname "*.html" -exec rsync -R {} \;

相关内容