Gere uma lista de arquivos e trunque-a em 2 listas de X Mb de arquivos cada

Gere uma lista de arquivos e trunque-a em 2 listas de X Mb de arquivos cada

Preciso gerar uma lista de todos os arquivos em um determinado diretório, e truncá-la em listas X contendo cada um uma quantidade fixa de dados de arquivos.

Por exemplo, tenho 95 Gb de dados.

  • gerar a lista de arquivos ( total.txt)
  • dividido total.txtem 3 listas:
    1. slice1.txtcontendo a lista dos primeiros 35 Gb de arquivos
    2. slice2.txtcontendo a lista dos seguintes 35 Gb de arquivos
    3. slice3.txtcontendo a lista dos arquivos restantes

Alguma dica? Pesquisei no Google e brinquei com find, awk, grep, mas essa tarefa parece muito acima das minhas competências.

Responder1

Você pode tentar usar odividircomando para separar seus arquivos:

split total.txt -b 4444160

O acima seria dividido total.txtem arquivos de 35 GB.

Responder2

while read filename; do cat $filename; done < total.txt | split -b 35G - slice

Isto criará "sliceaa", "sliceab", "sliceac" que você pode renomear.

Com outra implementação desplit, você pode ter que dizer-b 35000m

Se você tiver bash, você pode escrever

cat $(< total.txt) | split -b 35G - slice

suponha que não existam centenas ou milhares de nomes de arquivos.

Para criartotal.txt

files=(*)
printf "%s\n" "${files[@]}" > total.txt

informação relacionada