我不明白在 NetBSD 上查找命令的“-f”选项是什么意思。
手册:https://man.netbsd.org/find.1说
-f 指定 find 要遍历的文件层次结构。文件层次结构也可以指定为紧跟在选项后面的操作数。
用法:
查找 [-H | -L | -P] [-dEhsXx] -f 文件 [文件 ...] [表达式]
查找 [-H | -L | -P] [-dEhsXx] 文件 [文件 ...] [表达式]
我希望以下两个调用是等效的:
home# find ./ -name "*c"
./1.c
home# find -f ./ -name "*c"
find: unknown option -- n
find: unknown option -- a
find: unknown option -- m
find: unknown option -- e
./
./1.c
find: *c: No such file or directory
为了得到第二个等价物,我必须运行
home# find -f ./ -- -name "*c"
./1.c
我是否遗漏了什么?
BSD使用
find
来解析标志 ([-H | -L | -P] [-dEhsXx] [-f file]
)getopt()
,并使用第一个非选项参数将标志与路径/表达式分开。因为它想要支持诸如即使看到 ,它仍会继续尝试解析标志
-f file
。但这意味着如果您输入-f A -name ...
,它将尝试解析-name
为标志并失败。正如您所发现的,--
将强制结束标志,但任何不以 开头的内容也是如此-
,例如:手册页暗示了这一点:
附注:这是我最喜欢的 BSD 和 GNU 之间不兼容性的根源: