Saltar al contenido

¿Cómo dividir un archivo mbox en trozos grandes de n-MB usando la terminal?

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.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *