Tente algo assim:
find /path/to/dir1 /path/to/dir2 -type f -name '*.csv' -exec cat {} + >/path/to/merged.csv
Certifique-se de não colocar o arquivo mesclado em nenhum dos diretórios de entrada. :)
Eu tenho um grande conjunto de dados ~ 100 GB tendo arquivos csv menores ~ 100.000. Desejo mesclar todos os arquivos .csv juntos da maneira mais rápida possível. Os arquivos estão localizados em duas pastas diferentes.
ls *
.
Como posso conseguir isso usando o Linux? Eu sou relativamente novo nisso, se
alguém pode me ajudar, eu apreciaria. Se eu entendi corretamente, você deseja criar um único arquivo (tamanho 100GB?) de todos os seus arquivos. Nesse caso, o gato pode fazer o truque:
cat foo1 foo2 bar1 bar2 > newfile
ou no seu caso
cat folder1/* folder2/* > newfile
que irá pegar todos os arquivos de folder1 e folder2 e mesclá-los (como texto) em newfile. note que o gato apenas acrescenta os arquivos no final (ou seja, adicionando linhas)
Isso, no entanto, manterá os arquivos antigos e, portanto, você precisará do dobro do espaço, portanto também poderá tratá-los individualmente:
for f in folder1/* folder2/* ; do
cat $f >> newfile && rm $f
done
Dessa forma, cada arquivo é adicionado e removido.
É isso que você estava procurando?
Tags files text-processing csv