我当前文件夹中有两个文件:
提交Web.m
提交.m
以下find
不显示这两个文件:
find . -regex .*submit\(Web\)?\.m
但是上面的正则表达式在 emacs 缓冲区中工作得很好,即,使用 . 在 emacs 缓冲区中搜索示例字符串isearch-forward-regexp
。
默认regextype
值为.find
emacs
但似乎将其find
视为\(
文件名中的左括号,这与 emacs 正则表达式语法不同。
那么这是一个错误还是我对find
手册页的误解?
答案1
看来问题\(
首先是由 shell 解释的。
例如,您在当前目录中有一个名为:
foo(.测试
然后
ls foo\(.text
和
ls "foo(.text"
两者都有效。
因此,以下工作:
find . -regex ".*submit\(Web\)?\.m"
编辑:
单引号在这里也适用。
单引号和双引号的区别,参见这篇文章:bash 中的单引号与双引号