Como copiar o conteúdo de arquivos de uma pesquisa de linha de comando em um único arquivo?

1

Copie o conteúdo de todos os resultados da pesquisa em um único arquivo. Eu não quero copiar o resultado da pesquisa, mas o conteúdo do arquivo do resultado da pesquisa.

Por exemplo, meu resultado de pesquisa retornou uma lista de 10 arquivos, então eu gostaria de copiar o conteúdo desses 10 arquivos em um único arquivo (por exemplo, dump.test ).

    
por user73352 23.06.2014 / 13:24

1 resposta

2

Com o GNU grep e xargs :

grep -rlZ search-text some/dir/ | xargs -r0 cat > dump.test

-l é listar os arquivos que contêm pelo menos uma linha que corresponde ao search-text . -Z é imprimir essa linha delimitada por NUL para que possa ser passada com segurança para xargs -0 .

-r para pesquisar em todos os arquivos dentro de some/dir/ recursivamente.

POSIXly:

find some/dir -type f -size +0 -exec grep -q search-text {} \; 
   -exec cat {} + > dump.test

Isso será menos eficiente, pois isso significa executar um comando grep por arquivo não vazio.

    
por 23.06.2014 / 13:28