Generar una lista de archivos y truncarla en 2 listas de X Mb de archivos cada una

Generar una lista de archivos y truncarla en 2 listas de X Mb de archivos cada una

Necesito generar una lista de todos los archivos en un directorio determinado y truncarla en listas X que contengan cada una una cantidad fija de datos de archivos.

Por ejemplo, tengo 95 Gb de datos.

  • generar la lista de archivos ( total.txt)
  • dividido total.txten 3 listas:
    1. slice1.txtque contiene la lista de los primeros 35 Gb de archivos
    2. slice2.txtque contiene la lista de los siguientes 35 Gb de archivos
    3. slice3.txtque contiene la lista de los archivos restantes

¿Alguna pista? Busqué en Google y jugué con find, awk, grep, pero esta tarea parece estar realmente por encima de mis competencias.

Respuesta1

Puedes intentar usar eldividircomando para separar sus archivos:

split total.txt -b 4444160

Lo anterior se dividiría total.txten archivos de 35 GB.

Respuesta2

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

Esto creará "sliceaa", "sliceab", "sliceac" cuyo nombre podrá cambiar.

Con otra implementación desplit, quizás tengas que decir-b 35000m

Si tienes bash, puedes escribir

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

suponga que no hay cientos o miles de nombres de archivos.

Creartotal.txt

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

información relacionada