我运行这个命令:
~/shell_temp$ find . -type f -name "IMAG1806.jpg" -exec rm -f {}\
我得到以下输出:
> IMAG1806.jpg
Error:
find: missing argument to `-exec'
从当前目录中查找任何文件并删除的确切命令是什么-exec
?
答案1
;
您漏掉了末尾的a (以及{}
和之间的空格;
)。正确的命令是:
find . -type f -name "IMAG1806.jpg" -exec rm -f {} \;
;
-exec
表示谓词 的结束find
。
还要注意,我们在 前面使用了\;
ie来避免shell解释,否则 shell 会将其视为整个命令的结束,并会抛出相同的错误。您也可以使用而不是。\
;
;
;
find
find
';'
\;
\
您在最后使用,这表明您的 shell 将继续通过PS2
(由 表示>
)接受输入,您再次输入IMAG1806.jpg
,因此整个命令变成:
find . -type f -name "IMAG1806.jpg" -exec rm -f {}IMAG1806.jpg
正如您所见,这根本不是一个有效的命令,因为它IMAG1806.jpg
在末尾,没有结束谓词,并且和-exec
之间没有空格。{}
\;
答案2
您可以简单地
find . -type f -name 'IMAGE1806.jpg' -delete
从手册页中:
Delete files; true if removal succeeded. If the removal failed,
an error message is issued. If -delete fails, find's exit sta‐
tus will be nonzero (when it eventually exits). Use of -delete
automatically turns on the -depth option.