在Mac OS X上使用命令find扩展POSIX实用程序?

kit*_*une 4 regex macos bash terminal find

我尝试在Mac OS X 10.9终端上执行此命令:

find / -type f -regextype posix-extended -regex "(.*A.*a.*.*)|(.*a.*A.*.*)" -exec tail -n 3 '{}' \;
Run Code Online (Sandbox Code Playgroud)

但Bash v 3.2的回应是:

find: -regextype: unknown primary or operator
Run Code Online (Sandbox Code Playgroud)

我在终端联机页面上进行了深入搜索:

man find

man regex
Run Code Online (Sandbox Code Playgroud)

等等...

但我一无所获.是否应该更新Mac OS X Bash v3.2?似乎"-regextype"选项不包含在"find"中.

我该如何解决?

ps该命令在Ubuntu Linux 14上运行完美.

Chr*_*ver 11

对您的问题最简单的答案是,在OS X上,您需要使用-E选项而不是-regextype posix-extended

即:

发现/型的F -regextype POSIX扩展 -regex "(*A.一个. |.*)(*一个.A. -exec尾-n 3 '{}'\*.)";

变为:

找到-E /型的F -regex "(*A.一个..*)|(*一个.A.*)." -exec尾-n 3 '{}' \;

除了-exec tail抱怨的命令外,上面的内容适用于我的10.10安装.

这实际上由手册页的第一个条目覆盖:

 The options are as follows:

 -E      Interpret regular expressions followed by -regex and -iregex primaries as extended (modern) regular expressions rather than basic
         regular expressions (BRE's).  The re_format(7) manual page fully describes both formats.
Run Code Online (Sandbox Code Playgroud)