我正在使用此命令成功搜索:从日志目录(压缩文件)中的txt文件ips.txt
中搜索可疑IP列表。
root@yop# find /mylogs/ -exec zgrep -i -f ips.txt {} \; > ips.result.txt
我现在想用它来使用 parallel 来加快搜索速度。 我目前无法找到正确的args。我的意思是使用模式文件(每行一个)并将其导出到结果文件中。
请问平行大师吗?
我发现越接近的命令是这样的: grep-or-anything-else-many-files-with-multiprocessor-power
但无法将其与模式文件列表一起使用并将结果导出到文件中......
请帮助,谢谢大家。
答案 0 :(得分:4)
如果您只想一次运行多个作业,请考虑使用GNU parallel:
parallel zgrep -i -f ips.txt :::: <(find /mylogs -type f) > results.txt
答案 1 :(得分:0)
如何循环文件,然后将每个文件放入后台作业?正如Mark评论的那样,如果你有大量的日志文件,这可能不合适。还假设您没有运行任何其他背景。
mkdir results
for f in "$(find /mylogs/)"; do
(zgrep -i -f ips.txt "$f" >> results/"$f".result &);
done
wait
cat results/* > ip.results.txt
rm -rf results
您可以使用 head 和/或 tail 限制要搜索的文件数,例如只搜索前50个文件:
for f in "$(find /mylogs/ | head -50)"; do...
然后是下一个50:
for f in "$(find /mylogs/ | head -100 | tail -50)"; do...
等等。