查找命令:find . -exec echo {} \; = 缺少“-exec”的参数。

8

为什么这个不行?(echo 并非真正的命令)

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

我总之是这样做的:

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

3
这里工作正常。你在实际运行时记得转义分号吗? - FatalError
您需要指定“真实命令”。 - Grim
1
真实命令是否解析为实际的二进制文件(在/bin/usr/binPATH中的其他位置),还是您试图使用一个shell内置命令或函数作为命令?-exec的第一个参数需要是一个实际的可执行二进制文件或脚本。 - twalberg
6
除非您提供“真实”的命令或产生相同行为的命令,否则这个问题实际上是无法回答的。 - FatalError
1
FYI -- 你最终所做的事情实际上有漏洞 -- 任何带有空格的文件名都将被视为两个单独的文件,分别处理其前面和后面的部分。 - Charles Duffy
显示剩余4条评论
2个回答

7
这对我有用。
find . -type f -exec file '{}' \;

花括号用单引号括起来,以避免被解释为shell脚本标点。


0
以下这行文字来自于man find的EXAMPLES部分:
find . -type f -exec file '{}' \;

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


6
在 POSIX sh 风格的 shell 中,{} 不需要加引号。 - Charles Duffy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接