定位:正则表达式重复后缀运算符不适用于 --regextype emacs

定位:正则表达式重复后缀运算符不适用于 --regextype emacs

我有一些文件,其名称的形式krita-NN.kra为其中NN是具有一到两位数字的数字。我希望locate他们使用 Emacs 正则表达式。但是,那重复后缀运算符Emacs 正则表达式的( \{n, m\}, \{n\}) 似乎不被 接受locate。具体来说,两者

  • locate --regex --regextype emacs 'krita-[0-9]\.kra$'

  • locate --regex --regextype emacs 'krita-[0-9][0-9]\.kra$'

返回相关结果,但在以下工作中没有正则表达式

  • locate --regex --regextype emacs 'krita-[0-9]\{1,2\}\.kra$;
  • locate --regex --regextype emacs 'krita-[0-9]\{1\}\.kra$

即使大括号没有转义。

问题:是否locate接受 Emacs 正则表达式,正如手册页中所声称的那样?

笔记:

  • 这个问题不是在寻找替代解决方案例如find其他正则表达式类型。
  • locate版本:locate (GNU findutils) 4.7.0

答案1

根据 @Stéphane Chazelas 的建议,Texinfo 文档 ( info -n emacs locate) 没有为emacs正则表达式指定重复运算符,这与Emacs 正则表达式相反,正则表达式类型grep使用我期望的语法支持它。即,

locate --regex --regextype grep 'krita-[0-9]\{1,2\}\.kra$

解决了这个问题。

相关内容