在目录下的所有文件中查找UTF-8字符串

时间:2013-10-26 07:13:55

标签: python perl bash

如何递归搜索包含正则表达式模式的目录下的所有文件?模式是UTF-8字符串。

任何使用Python,Perl或bash的解决方案都是合适的。

2 个答案:

答案 0 :(得分:4)

grep -lr "pattern" /mydirectory/*

它将列出找到模式的mydirectory的所有文件。

答案 1 :(得分:2)

使用os.walk

的Python解决方案
import os
import re

target_dir = '.'
pattern = re.compile(r'blah')

for parent, dirnames, filenames in os.walk(target_dir):
    for fn in filenames:
        filepath = os.path.join(parent, fn)
        try:
            with open(filepath) as f:
                if any(pattern.search(line) for line in f):
                    print(filepath)
        except IOError:
            pass