Мне нужно извлечь одну строку, начинающуюся с 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)
на самом деле он работает нормально. Но это заняло много вычислительной мощности и времени. Я ищу команду замены терминала для этого сценария.
Что случилось с:
find ./ -type f -exec grep "Subject:" {} \; >/tmp/output.txt
Используя sed
, отовсюду:
sed -n '/^Subject:/p' /path/to/dir/*.txt
Из каталога, содержащего файлы:
sed -n '/^Subject:/p' *.txt
/^Subject:/
будет соответствовать только строкам, запускающимся с Subject:
.
Для сохранения вывода в файле:
sed -n '/^Subject:/p' *.txt >output.file
Используя grep
с -r
для рекурсивного поиска и -m1
, чтобы прекратить читать файл после первого соответствия.
grep -rh -m1 '^Subject:' /path/to/your/folder/ > out
Все согласующие отрезки длинной линии находятся в out
.