在python中捕获复杂shell命令的输出

时间:2014-09-19 15:55:41

标签: python bash shell

我想在python脚本中嵌入一个命令并捕获输出。在这种情况下,我尝试使用"find"在不确定数量的子目录中查找不确定数量的文件,并grep每个匹配文件中的字符串,如:

grep "rabbit" `find . -name "*.txt"`

我正在运行Python 2.6.6(是的,我也很抱歉,但现在不能为整个组织做好准备)。

我已经使用subprocessshlex等尝试了一些已经在这里建议的内容,但是我还没有找到一种语言可以吞下这个,或最终吸吮"找到..." as the search string for grep`等。建议赞赏。 肯

1 个答案:

答案 0 :(得分:2)

import subprocess


find_p = subprocess.Popen(["find", ".", "-name", "*.txt"], stdout=subprocess.PIPE)
grep_p = subprocess.Popen(["xargs", "grep", "rabbit"], stdin=find_p.stdout)

grep_p.wait()