Shell
查找:缺少 Cygwin 中“-exec”的參數
我正在嘗試從
component
文件夾中獲取 HTML 文件並建構新component
文件夾並嘗試將該component
(新)文件夾插入到build
我使用給定程式碼的文件夾中:find components -iname '*.html' -exec rsync -R {} ./build/ \\;
但是當我這樣做時,我得到了給定的錯誤:
find: missing argument to -exec
請給我一些解決方案來解決這個問題?
問題的原始表述中的兩個問題:
- 執行的命令
-exec
必須以 終止;
。- 該
rsync
命令格式錯誤(或者更確切地說,在原始問題中)。這就是我認為你可能想要的:
find components -iname "*.html" -exec rsync -R {} ./build/ ';'
要與您一起復製文件,
rsync
您必須說明要復製到的位置。在這裡,我假設您要將所有找到的文件複製到./build/
.問題更新後:
執行的命令
find
必須由一個;
受 shell 保護的字元終止。保護 shell 的正確方法;
是使用\;
或';'
¹ 引用它。由於您
\\;
正在;
使用. 由於它看不到任何,它會抱怨缺少參數。find``\``;
npm
你在某處提到過。這是 JavaScript 的包管理器。既然你提到了這一點,它讓我相信你不是find
從命令行執行,而是從某種腳本執行。根據該腳本語言的特定語法和句法規則,引用(可能)與腳本中的工作方式不同。要正確解決此問題,最好
find
在呼叫它的腳本的上下文中查看實際呼叫 。在使用此資訊更新問題之前,我在這裡給出的答案與任何人都可以得到的一樣接近。
¹(或
";"
更多奇特的形式,如$';'
或$'\u003b'
取決於外殼,';'
是最便攜的)
如果使用find.exe的cygwin二進製文件從標準MS-DOS 命令提示符執行,可能只是您不需要轉義最後的 ’ ; ’ (因為解釋命令行的不是 sh/bash/… 而是 DOS,因此 ‘;’ 不是特殊字元):
所以我會嘗試:
find components -iname "*.html" -exec rsync -R {} ./build/ ;