找到。-exec echo {} \;= 缺少 '-exec' 的参数

find . -exec echo {} \; = missing argument to `-exec'

提问人:Pascal Polleunus 提问时间:5/23/2012 更新时间:3/10/2017 访问量:14800

问:

为什么这不起作用?(echo 不是真正的命令)

$ find . -type d -exec echo {} \;
find: missing argument to `-exec'

无论如何,我都设法做到了这一点:

$ for f in `find . -type d`; do echo $f; done
bash 查找

评论

3赞 FatalError 5/23/2012
在这里工作正常。你还记得逃跑吗?你什么时候真正运行它?
0赞 Grim 5/23/2012
您需要指定“真正的命令”
1赞 twalberg 5/23/2012
真正的命令是否解析为实际的二进制文件(在 中,或在您的其他地方),或者您正在尝试使用内置的 shell 或函数作为命令?第一个参数需要是实际的可执行二进制文件或脚本。/bin/usr/binPATH-exec
6赞 FatalError 5/23/2012
除非您提供“真实”命令或产生相同行为的命令,否则这个问题确实无法回答。
1赞 Charles Duffy 5/23/2012
仅供参考 - 您最终做的事情实际上是有问题的 - 任何带有空格的文件名都会将空格前后的部分视为两个单独的文件。

答:

0赞 djhaskin987 5/23/2012 #1

以下行来自 EXAMPLES 部分:man find

find . -type f -exec file '{}' \;

在我看来,该部分需要用单引号引起来。{}

评论

6赞 Charles Duffy 5/23/2012
不需要在 POSIX sh 样式的 shell 中引用。{}
7赞 bakalov 3/10/2017 #2

这对我有用。

find . -type f -exec file '{}' \;

大括号用单引号括起来,以防止它们被解释为 shell 脚本标点符号。