使用“-exec rm -f {}\”时出现“find:缺少‘-exec’参数”

使用“-exec rm -f {}\”时出现“find:缺少‘-exec’参数”

我运行这个命令:

~/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 会将其视为整个命令的结束,并会抛出相同的错误。您也可以使用而不是。\;;;findfind';'\;

\您在最后使用,这表明您的 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.

相关内容