grep -r "bananas" | cut -d: -f1 | xargs cat >> result.txt
grep
-
-r: recursivo. Leia todos os arquivos em cada diretório, recursivamente,
Resultado: file_name:text para cada linha. Por exemplo, foo.txt:bananas .
Agora precisamos buscar o nome do arquivo de cada linha.
corte
Editor simples para remover parte da linha (você pode usar sed ou awk aqui, mas o corte é simples)
-
-ddelimiter. Já que temos:depois do arquivo este é nosso delimitador:-d: -
-fdividimos nossa saída em campos. Qual deles pegar?-f1- primeiro um!
xargs
Agora temos uma lista de arquivos. Isso a ver com eles? Usamos xargs que constrói e executa linhas de comando a partir da entrada padrão. Ele aceita o nome do arquivo no stdin e executa cat para cada linha, fornecendo o nome do arquivo como parâmetro. E cat simplesmente imprime seu conteúdo para stdout.
>> significa "anexar ao arquivo"