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

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

Copie o conteúdo de todos os resultados da pesquisa em um único arquivo. 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).

Responder1

Com GNU grepe xargs:

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

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

-rpara pesquisar em todos os arquivos internos some/dir/recursivamente.

POSIXamente:

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

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

informação relacionada