使用find和xargs grep一些存档日志

时间:2013-02-28 17:37:22

标签: bash xargs

我在csv文件中有一个IP列表,我需要在一大堆存档日志中搜索此IP的任何遭遇,但仅限于1月份的文件。

我首先尝试过这个:

for i in `cat /tmp/ips.csv`; do zgrep -rHc $i /webstats/2010/some_dir/*/*.2010-01*.access.gz ; done

但这不起作用。我明白了:

bash: /usr/bin/zgrep: Argument list too long

但是我想使用find + xargs,但我不确定如何构建我的表达式。 我在想这个:

find /logs/2010/some_dir/ -name *.2010-01*.access.gz -type f -print0 | xargs zgrep -rHc `/tmp/ips.csv` {}

但是看起来不那么好。

1 个答案:

答案 0 :(得分:2)

试试这个:

find /logs/2010/some_dir -name '*.2010-01*.access.gz' -type f -print0 | xargs -0 zgrep -Hc -f /tmp/ips.csv