我正在尝试找到一些压缩的日志文件,并对它们进行一些操作。我不能使用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-regex模式的理解,我必须转义所有的括号。正则表达式的其余部分正常工作,因为如果我将括号部分替换为一个数字(例如7),它运行良好。
有人能帮我创建一个匹配7-23的正则表达式吗?
谢谢。
发布于 2010-10-08 00:24:23
我认为你走对了路,只是在每个|前面少了一个\
\([7-9]\|1[0-9]\|2[0-3]\)https://stackoverflow.com/questions/3883642
复制相似问题