O que há de errado com:
find ./ -type f -exec grep "Subject:" {} \; >/tmp/output.txt
Eu preciso extrair um início de linha única com Subject:
. Mas o problema é que eu tenho mais de 1500 arquivos .txt em uma pasta. Eu uso este script 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)
na verdade, funciona bem. Mas foi preciso muito poder e tempo de processamento. Eu estou procurando um comando de terminal de substituição para este script.
O que há de errado com:
find ./ -type f -exec grep "Subject:" {} \; >/tmp/output.txt
Usando grep
com -r
para uma pesquisa recursiva
e -m1
para parar de ler o arquivo depois da primeira partida.
grep -rh -m1 '^Subject:' /path/to/your/folder/ > out
Todas as linhas correspondentes estão em out
.
Usando sed
em qualquer lugar:
sed -n '/^Subject:/p' /path/to/dir/*.txt
Do diretório que contém arquivos:
sed -n '/^Subject:/p' *.txt
/^Subject:/
corresponderá apenas às linhas que começam com Subject:
.
Para salvar a saída em um arquivo:
sed -n '/^Subject:/p' *.txt >output.file