我有一个包含100行左右的文件messages.txt
,我想在给定目录的所有文件中搜索messages.txt
中任何行的出现。搜索必须是递归的。
如果搜索可以与正则表达式匹配,那也很好。事实证明messages.txt
的每一行都是foo=bar
的形式,而我只对foo
感兴趣,所以我需要忽略=bar
每一行。 (通过准备一个新的messages.txt
可以很容易地解决这个问题,但是知道是否有一个功能可以做到这一点会很好。
我在这里的选择是Python
(因为我喜欢它)和bash scripting
(因为我正在努力学习它)。我可以很容易地想出一个Python
脚本,所以如果你在Python
给出一个解决方案,那么如果它是以Pythonic的方式,我将不胜感激。但是,我的偏好是bash
- 我希望混合使用sed
,grep
,find
和cat
(不一定是所有这些)诀窍。
由于
答案 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 *
应该做的伎俩