tim*_*ram 3 shell man find command syntax
所以,当我忘记如何运行某个命令时,我一直试图养成在开始谷歌之前先查看手册页的习惯。
我今天正在查看 find 命令的手册页,并在概要部分中将命令的格式指定为:
SYNOPSIS
find [-H] [-L] [-P] [-D debugopts] [-Olevel] [path...] [expression]
Run Code Online (Sandbox Code Playgroud)
这不是表明选项必须在路径之前,然后是表达式吗?或者概要没有指定顺序?
当我使用 find 时,虽然我必须在选项之前指定路径,如下所示:
find . -cmin -10 -ls
Run Code Online (Sandbox Code Playgroud)
-cmin
and-ls
是作为表达式的一部分的谓词,而不是选项。
请注意,您可以使用 标记选项的结尾--
,但在其之后仍然允许使用谓词。
使用 GNU find
,它允许省略路径:
find -- -L
Run Code Online (Sandbox Code Playgroud)
会抱怨未知的 -L 谓词(即使-L
是一个实际上具有等效谓词的有效选项)。-follow
这就是为什么同时
find "$file"
Run Code Online (Sandbox Code Playgroud)
喜欢
wc "$file"
Run Code Online (Sandbox Code Playgroud)
$file
以-
.开头时无法正常工作。
Doingwc -- "$file"
修复了它wc
(除了在 的特殊情况下file='-'
)但不修复它find -- "$file"
。FreeBSDfind
有find -f "$file"
这个功能。