管道特定的gzip压缩日志文件列表到grep中

时间:2011-05-10 15:33:44

标签: linux find grep logging

我在获取一堆gzip压缩apache访问日志文件中的行列表时遇到问题。我想要的是获取仅编号为1和2的日志文件列表,然后通过它们grep并提取具有特定匹配文本的行。

我最初只是为了编号为1的访问日志档案而工作。“/ pathname”文本是我正在寻找的文本:

zgrep /pathname/ access_*.log.1.gz

由于ls不支持正则表达式,我想出了以下内容以从我想要的文件的当前目录中获取列表:

find . -maxdepth 1 -type f -regex '\./access.+\.log\.[1|2]\.gz' -printf '%P\n'

find . -maxdepth 1 -type f -regex '\./access.+\.log\.[1|2]\.gz' | sed "s|^\./||"

我现在的问题是获取文件列表输出并通过文件zgrepping返回与我的文本匹配的那些文件中的行。我在这里咆哮错误的树吗?

2 个答案:

答案 0 :(得分:2)

尝试:

zgrep /pathname/ access_*.log.{1,2}.gz

或者,使用find -exec:

find . -maxdepth 1 -type f -regex '\./access.+\.log\.[1|2]\.gz' -exec zgrep /path/ {} \;

答案 1 :(得分:0)

我没有apache-logs,所以我使用了类似但不相同的模式:

ls /var/log/*.[12].gz

shell不支持正则表达式,但使用[123]或[1-3]进行分组,以及{1,2,3}和{1..3}或甚至{o..w}和{066..091}。