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

0

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.

  • gera a lista de arquivos ( total.txt )
  • split total.txt em 3 listas:
    1. slice1.txt contendo a lista do primeiro 35 Gb de arquivos
    2. slice2.txt contendo a lista dos seguintes 35 Gb de arquivos
    3. 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.

    
por fradeve 16.04.2012 / 19:32

2 respostas

0

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.

    
por 16.04.2012 / 19:54
0
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
    
por 16.04.2012 / 21:10

Tags