这是总结 find 命令概要的更好方法吗?

这是总结 find 命令概要的更好方法吗?

在手册页中,find我在概要中找到以下内容:

find [-H] [-L] [-P] [-D debugopts] [-Olevel] [path...] [expression]

但读完手册页后,我发现它更像是:

find [-H] [-L] [-P] [-D debugopts] [-Olevel] [path...] [options] [tests] [actions] 

我的这个理解正确吗?

答案1

您的概要表明选项必须出现在测试之前,并且选项和测试都必须出现在操作之前,但事实并非如此。事实上,它们可以按任何顺序进行。

find此外,GNU手册页中所谓的测试和所谓的操作之间根本没有区别。我不知道为什么手册页在文本中对它们进行不同的分类(请注意,非 GNU 版本的手册页find不区分),但这可能是为了方便和易于解释。事实上,行动实际上只是测试,它们只是碰巧有副作用。请注意,所有所谓的操作都被记录为具有布尔返回值,就像所谓的测试一样(尽管其中许多只是无条件返回 true)。整个表达式的计算受到这些返回值的影响,并且顺序很重要,就像“真实”测试一样(特别是当-o涉及括号和逻辑运算符时)。此外,即使是所谓的选项实际上也是测试(来自联机帮助页:“所有选项始终返回 true。”)。因此,在概要中暗示这些在语法上是不同的东西会产生误导。

答案2

用你的术语来说,选项,测试行动可以混合使用:

find / -type f -name '*.DELETE' -ls -delete -o -name '*.COMPRESS' -exec gzip {} \;

相关内容