`-name` 和 `-exec` 是 `find` 的选项还是非选项参数?

`-name` 和 `-exec` 是 `find` 的选项还是非选项参数?

-name和 是选项-exec还是非选项参数find?它们看起来像是简短的选项,如果我没记错的话,它们被称为查找表达式。例如,

find . -name "*.txt" -exec echo {} \;

答案1

find命令只有两个选项在 POSIX 中( -H, -L) 或五个在 GNU 中(还-P-Ddebug_opt, -O#)。所有其他参数都不是选项,因此是非选项参数。

值得注意的是,选项find 领先于路径,而所有查找表达式都应遵循它们:find [option...] path... [expression...]。 (GNU find 有一些额外的原色,有时也称为“选项”,例如-maxdepth;它们不是真正的选项,出现在表达式部分内,但我认为如果他们这样称呼它们,警告消息会更容易理解)。

答案2

-name-exec-print不是选项find公用事业公司,但是操作数。一个操作数是

命令的参数,通常用作向实用程序提供完成其处理所需的信息的对象。操作数通常遵循命令行中的选项。

(从POSIX 定义),即告诉实用程序要做什么的非选项(如file命令中的rm file告诉rm要删除哪个文件)。

find该实用程序的 POSIX 标准描述调用这些操作数初选这也是 BSD 系统上的称呼。

在 GNUfind手册中,它们被称为表达式并根据其用途分为几组:

  • 测试(例如-name, -mtime
  • 动作(例如-delete, -print
  • 全局选项(例如-maxdepth, -depth
  • 位置选项(例如-follow
  • 运算符(例如-not, -and

POSIX 标准find只有两个实数选项,-H-L。这些与如何处理符号链接有关。

POSIX 标准没有为任何实用程序定义任何多字符选项或“长选项”。但这并不妨碍实现添加长选项,GNU 实用程序尤其以添加富有表现力的长选项来扩展便利功能而闻名。

相关内容