问题描述
我正准备将此作为问题发布,但在摆弄了一段时间后,我找到了解决方案.所以我想我会继续在这里发布,以防它对其他人有帮助.
I was getting ready to post this as a question, but after fiddling around with it a little longer, I found the solution. So I thought I would go ahead and post it here in case it helps someone else.
我在 find -exec cmd + 时遇到了麻烦.我收到错误:
I had trouble with find -exec cmd +. I got the error:
$ find ./ -name "*JIM*" -exec cp {} $TARGET_DIR +
find: missing argument to `-exec'
如果我使用它就有效
$ find ./ -name "*JIM*" -exec cp {} $TARGET_DIR \;
但我不想使用它,因为它为找到的每个文件派生一个新进程.
But I did't want to use that because it forks a new process for every file found.
如果我使用它就有效
$ find ./ -name "*JIM*" -exec ls {} +
它列出了我要复制的所有文件.但是 -exec cp {} $TARGET_DIR +
不起作用.
It lists all of the files that I want to copy. But -exec cp {} $TARGET_DIR +
didn't work.
我找到的解决方案是:
$ find ./ -name "*JIM*" -exec cp --target-directory=$TARGET_DIR {} +
其中 --target-directory=
也可以替换为 -t
Where --target-directory=
could also be replaced with -t
希望这会有所帮助.
推荐答案
正如开篇所说,我找到的解决方案是:
As mentioned in the opening post, the solution I found is:
$ find ./ -name "*JIM*" -exec cp --target-directory=$TARGET_DIR {} +
其中 --target-directory=
也可以替换为 -t
Where --target-directory=
could also be replaced with -t
这篇关于使用 find -exec cp {} TARGET_DIR + 解决错误 'find: missing argument to -exec'的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!