Bash 错误解决方案';查找:缺少-exec&\x27的参数;使用find-exec cp{}TARGET_DIR+;

Bash 错误解决方案';查找:缺少-exec&\x27的参数;使用find-exec cp{}TARGET_DIR+;,bash,find,arguments,exec,cp,Bash,Find,Arguments,Exec,Cp,我正准备将此作为一个问题发布,但在花了一点时间摆弄之后,我找到了解决方案。所以我想我会继续把它贴在这里,以防它对其他人有帮助 我使用find-exec cmd+时遇到问题。我得到了一个错误: $ find ./ -name "*JIM*" -exec cp {} $TARGET_DIR + find: missing argument to `-exec' 如果我使用 $ find ./ -name "*JIM*" -exec cp {} $TARGET_DIR \; $ find ./ -

我正准备将此作为一个问题发布,但在花了一点时间摆弄之后,我找到了解决方案。所以我想我会继续把它贴在这里,以防它对其他人有帮助

我使用find-exec cmd+时遇到问题。我得到了一个错误:

$ find ./ -name "*JIM*" -exec cp {} $TARGET_DIR +
find: missing argument to `-exec'
如果我使用

$ find ./ -name "*JIM*" -exec cp {} $TARGET_DIR \;
$ find ./ -name "*JIM*" -exec ls {} +
但我不想使用它,因为它会为找到的每个文件派生一个新的进程

如果我使用

$ find ./ -name "*JIM*" -exec cp {} $TARGET_DIR \;
$ find ./ -name "*JIM*" -exec ls {} +
它列出了我要复制的所有文件。但是
-exec cp{}$TARGET_DIR+
不起作用

我找到的解决方案是:

$ find ./ -name "*JIM*" -exec cp --target-directory=$TARGET_DIR {} +
$ find ./ -name "*JIM*" -exec cp --target-directory=$TARGET_DIR {} +
其中
--target directory=
也可以替换为
-t


希望这能有所帮助。

正如我在开篇文章中提到的,我找到的解决方案是:

$ find ./ -name "*JIM*" -exec cp --target-directory=$TARGET_DIR {} +
$ find ./ -name "*JIM*" -exec cp --target-directory=$TARGET_DIR {} +

其中
--target directory=
也可以替换为
-t

,如果有人能解释第一个目录失败的原因,那将很有趣。这并不完全清楚,但是手册页似乎暗示你不能在{}和++之间有任何进一步的争论。我很好奇为什么这篇文章被关闭为“离题”。从社区定义的范围来看,这似乎属于“程序员常用的软件工具”类别,它包括修复我遇到的一个特定问题的代码。如果关闭它的任何人都能发表评论,我将不胜感激。谢谢诚然,这是一个模糊的规范,但我一直将“程序员常用的软件工具”解释为编译器、链接器、调试器、源代码控制等,而不是一般的实用程序。我认为,如果将问题转移到超级用户上,那就太好了。我发现它非常有用。另请参见:。非常好的答案!最重要的教训是,exec只接受一个
{}
,cmake必须将
{}+
作为最后一个参数传递给exec。因此,一般情况下,必须修改exec运行的命令,将find中的输入作为最后一个参数。