我需要提取以 开头的一行Subject:
。但问题是我的文件夹中有超过 1500 个 .txt 文件。我使用这个 python 脚本:
from glob import glob
import fileinput
import os
with open('output.txt', 'w') as out:
files = (os.path.join(p, f) for p, ds, fs in os.walk(os.curdir) for f in fs)
for line in fileinput.input(files):
if 'Subject:' in line:
out.write(line)
实际上它工作得很好。但它耗费了大量的处理能力和时间。我正在寻找此脚本的替代终端命令。
答案1
有什么问题:
find ./ -type f -exec grep "Subject:" {} \; >/tmp/output.txt
答案2
使用grep
with-r
进行递归搜索并-m1
在第一次匹配后停止读取文件。
grep -rh -m1 '^Subject:' /path/to/your/folder/ > out
所有匹配的行都在 中out
。
答案3
使用sed
,从任何地方:
sed -n '/^Subject:/p' /path/to/dir/*.txt
从包含文件的目录中:
sed -n '/^Subject:/p' *.txt
/^Subject:/
将仅匹配以 开头的行Subject:
。
要将输出保存在文件中:
sed -n '/^Subject:/p' *.txt >output.file