我正在尝试从component
文件夹中获取 HTML 文件并构建新component
文件夹,并尝试将该component
(新)文件夹插入build
到我正在使用给定代码的文件夹中:
find components -iname '*.html' -exec rsync -R {} ./build/ \\;
但是当我这样做时,我收到了给定的错误:
find: missing argument to -exec
请给我一些解决方案来解决这个问题?
答案1
问题最初的表述有两个问题:
- 用 执行的命令
-exec
必须由 终止;
。 - 命令
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 {} \;