与Find + emacs-regex模式匹配的正则表达式子表达式
问题描述:
我试图找到一些压缩的日志文件,并对它们进行一些操作。我不能使用ls,因为它们是目录中的数千个文件,BASH会抛出'参数列表太长'的错误。 这使我找到了,但我遇到了我的正则表达式的麻烦。与Find + emacs-regex模式匹配的正则表达式子表达式
这里是整个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-regex模式的理解中,我必须避开所有的括号。 正则表达式的其余部分工作,因为如果我用一个数字(例如7)替换括号部分,它工作正常。
任何人都可以帮助我创建一个正则表达式匹配7-23?
谢谢。
答
我认为你是在正确的轨道上,只是在每个|
面前缺少\
:
\([7-9]\|1[0-9]\|2[0-3]\)
感谢三分球。它工作完美。这是我所用过的最丑陋的正则表达式。愚蠢的逃跑... – fandingo 2010-10-07 17:19:18