Shell

查找:缺少 Cygwin 中“-exec”的參數

  • April 8, 2022

我正在嘗試從component文件夾中獲取 HTML 文件並建構新component文件夾並嘗試將該component(新)文件夾插入到build我使用給定程式碼的文件夾中:

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

但是當我這樣做時,我得到了給定的錯誤:

find: missing argument to -exec

請給我一些解決方案來解決這個問題?

問題的原始表述中的兩個問題:

  1. 執行的命令-exec必須以 終止;
  2. 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/ ;

引用自:https://unix.stackexchange.com/questions/388265