1

我有一个 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` {}

但是有些东西看起来不太好。

4

1 回答 1

2

尝试这个 :

find /logs/2010/some_dir -name '*.2010-01*.access.gz' -type f -print0 | xargs -0 zgrep -Hc -f /tmp/ips.csv
于 2013-02-28T17:43:00.380 回答