我发现 Find 手册的摘要很难阅读 替代文本 http://files.getdropbox.com/u/175564/syntax_manual.png
我们假设您正在寻找具有 777 权限的目录。 像素节拍的建议是
find -type d ! -perm -777
我的 OS/X 给出以下信息
find: illegal option -- t
find: illegal option -- y
find: illegal option -- p
find: illegal option -- e
find: d: No such file or directory
使用概要作为帮助时我不确定的事情
- 看不到选项放在哪里
-type
:我可以清楚地测试这一点,但我想学会更好地阅读手册,这样我就不需要寻求帮助了。 - 无法理解为什么我们需要两行摘要:似乎强调许多 PATH 是可选的
- 为什么 Pixelbeat 在命令中使用感叹号?
我们再来看一个 Grep 手册的例子。
替代文本 http://files.getdropbox.com/u/175564/grep_manual.png
它有一个清晰的概要,尽管我只会使用一行。我可以直接看到我们可以通过 grep
grep -r "masi" .
如何阅读类似于 Find 手册的手册?
答案1
首先要意识到的是,并非所有 find 命令都是一样的。在 Linux 系统上找到的 find 命令与在基于 BSD 的系统(如 OSX)上找到的 find 命令不同。您要参考的参考资料适用于 Linux。
对于 find 命令,“-type”选项是一个表达式,必须位于路径之后。如果您进一步阅读手册页,它将描述哪些选项是表达式。
感叹号表示否定。也就是说,它返回除权限为 777 的内容之外的所有内容。
命令 ”查找 -type d !-perm -777“无效,因为您没有在表达式前包含路径。您可以使用以下路径。如果想要当前目录。
回到主要问题。有时只阅读手册页的摘要是不够的,您实际上必须阅读其余部分。有些命令非常强大,除非您阅读或至少浏览整个文档,否则您将无法很好地了解如何使用命令。如果有示例,查看它们也很有帮助,如果没有,请上网查找一些示例。
答案2
您尚未指定目录
find . -type d ! -perm -777
您引用的手册页指出路径名应该先于表达。因此,在这种情况下,点“。”位于“之前-类型 d ...“。后者本身并不是选择。事实上-类型和-perm是 find 尝试对每个文件进行评估的布尔表达式的一部分。
答案3
无法看到选项 -type 的位置
-type
不是一个选项,而是一个表达式。所以它位于参数列表的末尾。如果您向下滚动手册页,您将找到一个标题为表达式的部分,其中详细介绍了此参数的所有可用选项。
无法理解为什么我们需要两行概要:它似乎强调许多路径是可选的
可以使用参数 或 来调用该程序pathname
。-f pathname
根据经验,方括号内的任何参数都是可选的。但那些不是的参数是必需的。这就是为什么 find 命令不起作用的原因——因为它在任何“路径名”之前都有“表达式”。点表示可以选择使用多个路径名参数。
为什么 Pixelbeat 在命令中使用感叹号?
我无法在您提供的链接中看到指定的命令。但是……
感叹号可用于否定后面的表达式。因此,该命令find . -type d
将查找目录并find . ! -type d
查找除目录之外的所有内容。不过,建议使用前面的反斜杠转义感叹号,这样您的 shell 就不会解释它。它也可以与 互换-not
。
答案4
是的,我安装的 Mac OS X 的手册页find
有点误导。概要列出了表达式放在最后,但逻辑上应该标为“表达式”的部分却被分成两部分,标题为“主要部分”和“操作符”。我总是阅读“描述”的前几行,因此应该注意,他们在那里澄清了这个问题:
DESCRIPTION
The find utility recursively descends the directory tree for each
pathname listed, evaluating an expression (composed of the ``primaries''
and ``operands'' listed below) in terms of each file in the tree.
这最终会提示您发现奇怪之处,因为以“-”开头的非选项参数实际上是必须以路径开头的表达式。
对于手册页,我给出的最有用的建议是学习分页器的命令。默认的命令似乎是less
,在这里您可以使用<
转到开头>
或转到结尾,以及/
或?
向前或向后搜索模式(例如“/-type”)。Control-f
以及space
前进一页和Control-b
后退一页。xman
您还可以在其中键入Control-s
以搜索标题为的手册页find
。我也喜欢这个apropos
命令。