utilitário unix para mesclar arquivos sem sobrecarga de espaço (cat * .txt merged.txt; rm * .txt em uma etapa) [duplicado]

0

Existe um utilitário que despeja um arquivo linha por linha para stdout e exclui essas linhas?

Eu tenho vários arquivos grandes que quero mesclar via cat . Claro que eu poderia fazer

cat *.txt > merged.txt 

Mas isso levará o dobro do espaço originalmente ocupado pelos arquivos txt . Excluindo-os após cat , assim como

cat *.txt > merged.txt && rm -rf *.txt

reduz os requisitos de armazenamento, mas ainda precisa de 2x o espaço para estar presente nesse meio tempo

Estou procurando um comando que faça stream de linhas para stdout e, ao mesmo tempo, exclua-as nos arquivos originais:

<some command> *.txt > merged.txt

de modo que o espaço total usado por *.txt + merged.txt e nunca seja maior do que o que *.txt precisava originalmente

    
por luksen 19.10.2016 / 15:54

1 resposta

0

Linha por linha soa um pouco complicado, mas se você aceitar fazer isso arquivo por arquivo (para que o armazenamento nunca exceda todos os arquivos *.txt + um deles:

find -name "*.txt" -exec cat {} >> result.txt \; -exec \rm -f {} \;

SEJA MUITO CUIDADO ! Sempre verifique o resultado do seu comando find antes de executá-lo, ou você estará rm 'ing coisas que não devem ser deletadas na velocidade da luz.

    
por 19.10.2016 / 16:07

Tags