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.txt
en 3 listas:slice1.txt
que contiene la lista de los primeros 35 Gb de archivosslice2.txt
que contiene la lista de los siguientes 35 Gb de archivosslice3.txt
que 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.txt
en 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