Se eu estou entendendo a pergunta corretamente, você pode fazer isso com um comando grep.
Para a primeira parte, sua saída grep
pode suprimir o nome do arquivo usando -h
, por exemplo:
grep -hnr "the_string" /media/slowly/DATA/lots_of_files > output.txt
Para Q1b, sua saída grep
pode incluir linhas precedendo e seguindo linhas correspondentes usando -A
e -B
, por exemplo:
grep -hnr -A2 -B2 "the_string" /media/slowly/DATA/lots_of_files > output.txt
A saída conterá um separador entre correspondências, que você pode suprimir com --no-group-separator
, por exemplo:
grep -hnr -A2 -B2 --no-group-separator "the_string" /media/slowly/DATA/lots_of_files > output.txt
Observe que a saída usa um delimitador diferente para linhas correspondentes ( :
) e linhas de contexto ( -
).