find 实用程序无法识别括号符号

find 实用程序无法识别括号符号

我当前文件夹中有两个文件:

提交Web.m
提交.m

以下find不显示这两个文件:

find . -regex .*submit\(Web\)?\.m

但是上面的正则表达式在 emacs 缓冲区中工作得很好,即,使用 . 在 emacs 缓冲区中搜索示例字符串isearch-forward-regexp

默认regextype值为.findemacs

但似乎将其find视为\(文件名中的左括号,这与 emacs 正则表达式语法不同。

那么这是一个错误还是我对find手册页的误解?

答案1

看来问题\(首先是由 shell 解释的。

例如,您在当前目录中有一个名为:

foo(.测试

然后

ls foo\(.text

ls "foo(.text"

两者都有效。

因此,以下工作:

find . -regex ".*submit\(Web\)?\.m"

编辑:

单引号在这里也适用。

单引号和双引号的区别,参见这篇文章:bash 中的单引号与双引号

相关内容