在多个文件中搜索多个字符串

时间:2013-09-13 13:40:20

标签: python bash sed

我有一个包含100行左右的文件messages.txt,我想在给定目录的所有文件中搜索messages.txt中任何行的出现。搜索必须是递归的。

如果搜索可以与正则表达式匹配,那也很好。事实证明messages.txt的每一行都是foo=bar的形式,而我只对foo感兴趣,所以我需要忽略=bar每一行。 (通过准备一个新的messages.txt可以很容易地解决这个问题,但是知道是否有一个功能可以做到这一点会很好。

我在这里的选择是Python(因为我喜欢它)和bash scripting(因为我正在努力学习它)。我可以很容易地想出一个Python脚本,所以如果你在Python给出一个解决方案,那么如果它是以Pythonic的方式,我将不胜感激。但是,我的偏好是bash - 我希望混合使用sedgrepfindcat(不一定是所有这些)诀窍。

由于

2 个答案:

答案 0 :(得分:1)

只需使用fgrep:

fgrep -rlf messages.txt dir

或者grep -f

grep -Frlf messages.txt dir

如果要搜索正则表达式,请不要使用-F:

grep -rlf messages.txt dir

更新:如果您的行messages.txt包含foo = bar等模式,您可以使用cut替换进程并切换bash:

grep -rlf <(cut -d = -f 2- messages.txt) dir

答案 1 :(得分:-1)

grep -r -f message.txt *

应该做的伎俩