Solución:
Si tu mbox
está en formato estándar, cada mensaje comenzará con From
y un espacio:
From [email protected]
Entonces, podrías COPY YOUR MBOX TO A TEMPORARY DIRECTORY
e intenta usar awk
para procesarlo, mensaje por mensaje, solo dividiéndolo al comienzo de cualquier mensaje. Digamos que buscamos 1,000 mensajes por archivo de salida:
awk 'BEGIN{chunk=0} /^From /{msgs++;if(msgs==1000){msgs=0;chunk++}}{print > "chunk_" chunk ".txt"}' mbox
entonces obtendrás archivos de salida llamados chunk_1.txt
para chunk_n.txt
cada uno contiene hasta 1000 mensajes.
Si tiene la mala suerte de estar en Windows (que es incapaz de comprender las comillas simples), deberá guardar lo siguiente en un archivo llamado awk.txt
BEGIN{chunk=0} /^From /{msgs++;if(msgs==1000){msgs=0;chunk++}}{print > "chunk_" chunk ".txt"}
y luego escribe
awk -f awk.txt mbox
Acabo de mejorar un guión de La respuesta de Mark Sechell. Como podemos ver, ese script puede analizar el archivo mbox en función de la cantidad de correo electrónico por fragmento. Este script mejorado puede analizar el archivo mbox según el tamaño máximo definido para cada fragmento.
Por lo tanto, si tiene una limitación de tamaño para cargar o importar el archivo mbox, puede probar el siguiente script para dividir el archivo mbox en trozos con tamaño especificado *.
Guarde el siguiente script en un archivo de texto, p. Ej. mboxsplit.txt
, en el directorio que contiene el archivo mbox (por ejemplo, llamado mbox
):
BEGIN{chunk=0;filesize=0;}
/^From /{
if(filesize>=40000000){#file size per chunk in byte
close("chunk_" chunk ".txt");
filesize=0;
chunk++;
}
}
{filesize+=length()}
{print > ("chunk_" chunk ".txt")}
Y luego ejecute / escriba esta línea en ese directorio (contiene el mboxsplit.txt
y el mbox
expediente):
awk -f mboxsplit.txt mbox
tenga en cuenta:
- El tamaño del resultado puede ser mayor que el tamaño definido. Depende del último tamaño de correo electrónico insertado en el búfer / fragmento antes de verificar el tamaño del fragmento.
- No dividirá el cuerpo del correo electrónico.
- Un fragmento puede contener solo un correo electrónico si el tamaño del correo electrónico es mayor que el tamaño del fragmento especificado
Le sugiero que especifique el tamaño del fragmento menor o menor que el tamaño máximo de carga / importación.