Você pode tentar usar o comando split para separar seus arquivos:
split total.txt -b 4444160
O acima dividiria total.txt
em arquivos de 35 GB.
Eu preciso gerar uma lista de todos os arquivos em um determinado diretório, e truncá-lo em listas X contendo cada uma uma quantidade fixa de dados de arquivos.
Por exemplo Tenho 95 Gb de dados.
total.txt
) total.txt
em 3 listas:
slice1.txt
contendo a lista do primeiro 35 Gb de arquivos slice2.txt
contendo a lista dos seguintes 35 Gb de arquivos slice3.txt
contendo a lista dos arquivos restantes Alguma dica? Eu pesquisei e brinquei com o find, awk, grep, mas essa tarefa parece realmente acima das minhas competências.
Você pode tentar usar o comando split para separar seus arquivos:
split total.txt -b 4444160
O acima dividiria total.txt
em arquivos de 35 GB.
while read filename; do cat $filename; done < total.txt | split -b 35G - slice
Isso criará "sliceaa", "sliceab", "sliceac", que você pode renomear.
Com outra implementação de split
, talvez seja necessário dizer -b 35000m
Se você tem bash, você pode escrever
cat $(< total.txt) | split -b 35G - slice
suponha que não haja centenas ou milhares de nomes de arquivos.
Para criar total.txt
files=(*)
printf "%s\n" "${files[@]}" > total.txt