我有一个包含数千个 zip 文件的目录,这些文件在表单中注明日期YYYYMMDD_hhmmss.zip
,每个大约 300K。在每个 zip 文件中大约有 400 个 xml 文件,每个大约 3K。
我需要能够在 zip 文件的日期范围内搜索和找到给定的字符串。
我有以下单线
find /home/mydir/ -type f | sort | \
awk "/xml_20140207_000016.zip/,/xml_20140207_235938.zip/" | \
xargs -n 1 -P 10 zipgrep "my search string"
Run Code Online (Sandbox Code Playgroud)
它的重点是
awk
命令仅打印第一个匹配字符串之后到第二个匹配字符串的行)zipgrep
即使在 24 核机器上有 10 个进程,这种单行运行速度也非常慢。我相信它因为zipgrep
命令而变慢,但我不够聪明,不知道如何改进它。我不知道该不该,但我有点尴尬,我的同事写了一个运行速度比这个脚本更快的java工具。如果可能的话,我想扭转这种局面。那么,有没有人知道如何在这种情况下更快地执行此命令?或者完全改进它的任何部分?