![Como copiar o conteúdo dos arquivos de uma pesquisa de linha de comando em um único arquivo?](https://rvso.com/image/38658/Como%20copiar%20o%20conte%C3%BAdo%20dos%20arquivos%20de%20uma%20pesquisa%20de%20linha%20de%20comando%20em%20um%20%C3%BAnico%20arquivo%3F.png)
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 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 correspondente ao arquivo 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 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 grep
comando por arquivo não vazio.