我有一些文件,其名称的形式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$
解决了这个问题。