Regex 与Find+;emacs正则表达式模式

Regex 与Find+;emacs正则表达式模式,regex,emacs,find,Regex,Emacs,Find,我试图找到一些压缩的日志文件,并对它们执行一些操作。我不能使用ls,因为目录中有数千个文件,BASH抛出了一个“参数列表过长”错误。 这让我找到了,但我的正则表达式有问题 这是整个find命令 find $i -regex '.*logfile_MP[0-9]-GW0[0-9]_2010-09-\(\([7-9]\)|\(1[0-9]\)|\(2[0-3]\)\)-.*' -exec ls {} \; 实际上,我需要遍历几个日志目录,因此$I来自BASH循环来遍历所有目录。 现在,我只是想列出

我试图找到一些压缩的日志文件,并对它们执行一些操作。我不能使用ls,因为目录中有数千个文件,BASH抛出了一个“参数列表过长”错误。 这让我找到了,但我的正则表达式有问题

这是整个find命令

find $i -regex '.*logfile_MP[0-9]-GW0[0-9]_2010-09-\(\([7-9]\)|\(1[0-9]\)|\(2[0-3]\)\)-.*' -exec ls {} \;
实际上,我需要遍历几个日志目录,因此$I来自BASH循环来遍历所有目录。 现在,我只是想列出文件,所以我知道我有正确的文件;一旦我的-exec声明生效,我会修改它

问题与括号部分有关:

\(\([7-9]\)|\(1[0-9]\)|\(2[0-3]\)\)
我正在尝试匹配一系列的天数(7-23天)。根据我对Emacs正则表达式模式的理解,我必须对所有括号进行转义。 正则表达式的其余部分工作正常,因为如果我用一个数字(例如7)替换圆括号部分,它就可以正常工作

有人能帮我创建一个正则表达式来匹配7-23吗


谢谢。

我想你说得对,只是在每个
前面少了一个
\

\([7-9]\|1[0-9]\|2[0-3]\)

谢谢崔。它工作得很好。这是我用过的最难看的正则表达式。愚蠢的逃跑。。。