【发布时间】:2013-09-25 00:15:45
【问题描述】:
我想在几百个日志文件中高效搜索约 200 个文件名。
我可以使用grep 的-f 指令轻松做到这一点,并将针头放入文件中。
但是,有几个问题:
- 我有兴趣高效地执行此操作,如 How to use grep efficiently?
- 我想分别了解所有日志文件中 每个 搜索词(即文件名)的所有匹配项。
grep -f会匹配,因为它会在每个文件中找到针。 - 我想知道文件名何时不匹配。
2.7 i7 MBP w/16gb 内存
使用grep -ron -f needle * 给我:
access_log-2013-01-01:88298:google
access_log-2013-01-01:88304:google
access_log-2013-01-01:88320:test
access_log-2013-01-01:88336:google
access_log-2013-01-02:396244:test
access_log-2013-01-02:396256:google
access_log-2013-01-02:396262:google
其中needle 包含:
google
test
这里的问题是在整个目录中搜索来自needle 的任何匹配项,并且该进程是单线程的,因此需要很长时间。也没有关于它是否无法找到匹配项的明确信息。
【问题讨论】:
-
文件名中是否包含空格?此外,有时文件名会附加到其他文本还是总是由空格/行首/行尾分隔?
-
这个脚本的输出是什么样子的?
-
@Desidero 文件名不包含空格。文件名可以附加到其他文本。想想 /foor/bar/baz/needle.txt
-
@michael 不确定我是否关注。
-
@kayaker243,假设您有解决此问题的方法,输出结果如何。给我们一个输入输出的例子
标签: multithreading bash grep