{"id":19214,"date":"2025-06-08T14:43:04","date_gmt":"2025-06-08T12:43:04","guid":{"rendered":"https:\/\/linux-bibel.at\/?p=19214"},"modified":"2025-06-08T14:43:06","modified_gmt":"2025-06-08T12:43:06","slug":"wer-kennt-es-nicht-viele-pdf-dateien-auf-mehrere-mails-aufteilen","status":"publish","type":"post","link":"https:\/\/linux-bibel.at\/index.php\/2025\/06\/08\/wer-kennt-es-nicht-viele-pdf-dateien-auf-mehrere-mails-aufteilen\/","title":{"rendered":"Wer kennt es nicht viele PDF-Dateien auf mehrere Mails aufteilen."},"content":{"rendered":"\n<p>Ich habe versucht mir mittels <a href=\"https:\/\/linux-bibel.at\/index.php\/enzyklopaedie\/bash\/\" target=\"_self\" title='Die Abk&uuml;rzung \"bash\" steht f&uuml;r \"Bourne Again Shell\". Die Bash ist eine Shell, die als Mensch-Maschine-Schnittstelle dient und eine Umgebung bereitstellt, in der zeilenweise Texteingaben und -ausgaben m&ouml;glich sind. Sie ist eine Weiterentwicklung der Bourne-Shell und wird als Standard-Shell auf den meisten Linux-Systemen verwendet. Die Bash ist auch eine Skriptsprache, die zum Erstellen von Shell-Skripten&hellip;' class=\"encyclopedia\">Bash<\/a> <a href=\"https:\/\/linux-bibel.at\/index.php\/enzyklopaedie\/script\/\" target=\"_self\" title=\"Mit einem Script ist ein kleines Programm im Textformat gemeint, dass nicht kompiliert, sondern von einem Interpreter direkt ausgef&uuml;hrt wird. Als Beispiel Linux Shell Scripts f&uuml;r Linux, oder auch Perl Scripts, die durch einen Perl Interpreter ausgef&uuml;hrt werden.\" class=\"encyclopedia\">Script<\/a> die Arbeit etwas zu erleichtern. Ich habe manchmal mehrere <a href=\"https:\/\/linux-bibel.at\/index.php\/enzyklopaedie\/datei\/\" target=\"_self\" title='Unter \"Datei\" versteht man eine Einheit, die Informationen oder Daten enth&auml;lt. Dateien k&ouml;nnen verschiedene Arten von Inhalten haben, wie Text, Bilder, Audiodateien oder ausf&uuml;hrbare Programme. In Linux werden Dateien in einem hierarchischen Dateisystem organisiert, das &auml;hnlich wie ein Verzeichnisbaum aufgebaut ist. Das Wurzelverzeichnis \"\/\" ist der oberste Knoten des Verzeichnisbaums und enth&auml;lt alle anderen Dateien&hellip;' class=\"encyclopedia\">Datei<\/a>anh&auml;nge (&gt;20) die ich per E-Mail versenden muss. Hierbei nervt es einfach immer auf die Gesamtgr&ouml;&szlig;e der Mai<a href=\"https:\/\/linux-bibel.at\/index.php\/enzyklopaedie\/lan\/\" target=\"_self\" title=\"Ein LAN (Local Area Network) ist ein lokales Netzwerk, das in der Regel in einem begrenzten physischen Bereich wie einem Geb&auml;ude oder einem Haus eingerichtet ist. Es erm&ouml;glicht die Kommunikation und den Datenaustausch zwischen verschiedenen Ger&auml;ten wie Computern, Laptops, Druckern und Speicherger&auml;ten innerhalb des Netzwerks. LANs k&ouml;nnen sowohl kabelgebunden als auch drahtlos eingerichtet werden, wobei&hellip;\" class=\"encyclopedia\">lan<\/a>h&auml;nge zu schauen um die maximale Mailgr&ouml;&szlig;e nicht zu &uuml;berschreiten.<\/p>\n\n\n\n<p><strong>Funktionsweise:<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Eingabeabfrage:\n\n    Maximale E-Mail-Gr\u00f6\u00dfe (in MB)\n\n    Quellordner f\u00fcr PDFs\n\n    Automatische Erstellung eines Zielordners (PDF_Mail_Pakete)\n\nDateiverarbeitung:\n\n    Findet alle PDFs im Quellordner\n\n    Sortiert sie absteigend nach Gr\u00f6\u00dfe\n\n    Packt Dateien in Gruppen, bis das Gr\u00f6\u00dfenlimit erreicht ist\n\n    \u00dcberspringt einzelne Dateien, die zu gro\u00df sind\n\nAusgabe:\n\n    Erstellt nummerierte Mail-Ordner (Mail_1, Mail_2, etc.)\n\n    Kopiert PDFs in die entsprechenden Ordner\n\n    Erstellt Dateiliste.txt mit den enthaltenen Dateien\n\n    Zeigt Fortschritt mit formatierten Dateigr\u00f6\u00dfen an<\/code><\/pre>\n\n\n\n<p><strong>Features:<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Automatische Gr\u00f6\u00dfenberechnung in MB\n\n<strong>\u00dcberspringen zu gro\u00dfer Einzeldateien mit Warnung<\/strong>\n\nFortschrittsanzeige w\u00e4hrend der Verarbeitung\n\nFehlerbehandlung bei ung\u00fcltigen Eingaben\n\nBehandlung von Dateinamen mit Leerzeichen\/Sonderzeichen\n\nKlare Zusammenfassung nach Abschluss<\/code><\/pre>\n\n\n\n<p><strong>Verwendung:<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Skript als pdf-mailer.sh speichern\n\nAusf\u00fchrbar machen: chmod +x pdf-mailer.sh\n\nAusf\u00fchren: .\/pdf-mailer.sh\n\nAnweisungen folgen<\/code><\/pre>\n\n\n\n<p>Beispielausgabe:<\/p>\n\n\n\n<p>Mails mit 20MB max. Anhanggr&ouml;&szlig;e<\/p>\n\n\n\n<p>Mail_1 erstellt: 19.84 MB<br>Mail_2 erstellt: 18.76 MB<\/p>\n\n\n\n<p>Fertig! Es wurden 2 <a href=\"https:\/\/linux-bibel.at\/index.php\/enzyklopaedie\/pakete\/\" target=\"_self\" title=\"Unter Linux sind Pakete die grundlegenden Bausteine von Software, die von einem Paketmanager verwaltet werden. Ein Paket enth&auml;lt die ausf&uuml;hrbaren Dateien, Konfigurationsdateien, Dokumentation und Metadaten, die f&uuml;r die Installation und Verwaltung der Software ben&ouml;tigt werden.\" class=\"encyclopedia\">Paket<\/a>e erstellt.<br>Alle <a href=\"https:\/\/linux-bibel.at\/index.php\/enzyklopaedie\/datei\/\" target=\"_self\" title='Unter \"Datei\" versteht man eine Einheit, die Informationen oder Daten enth&auml;lt. Dateien k&ouml;nnen verschiedene Arten von Inhalten haben, wie Text, Bilder, Audiodateien oder ausf&uuml;hrbare Programme. In Linux werden Dateien in einem hierarchischen Dateisystem organisiert, das &auml;hnlich wie ein Verzeichnisbaum aufgebaut ist. Das Wurzelverzeichnis \"\/\" ist der oberste Knoten des Verzeichnisbaums und enth&auml;lt alle anderen Dateien&hellip;' class=\"encyclopedia\">Datei<\/a>en befinden sich in: &sbquo;\/<a href=\"https:\/\/linux-bibel.at\/index.php\/enzyklopaedie\/home\/\" target=\"_self\" title=\"F&uuml;r jeden Benutzer eines GNU\/Linux-Systems wird unter \/home ein eigenes Verzeichnis mit dem Benutzernamen erstellt, f&uuml;r das er s&auml;mtliche Zugriffsrechte besitzt. Mit Ausnahme von root (dem Systemadministrator) k&ouml;nnen Benutzer auf das Home-Verzeichnis eines anderen Benutzers nicht zugreifen. Hier werden die pers&ouml;nlichen Daten und die Konfigurationsdateien der vom betreffenden Benutzer verwendeten Programme abgelegt. Konfigurationsdateien sind gew&ouml;hnlich&hellip;\" class=\"encyclopedia\">home<\/a>\/user\/dokumente\/<a href=\"https:\/\/linux-bibel.at\/index.php\/enzyklopaedie\/pdf\/\" target=\"_self\" title='PDF ist die Abk&uuml;rzung f&uuml;r \"Portable Document Format\" und wurde 1993 von dem Unternehmen Adobe System als plattform-unabh&auml;ngiges Dateiformat entwickelt. PDF-Dokumente k&ouml;nnen auf allen Computern ge&ouml;ffnet werden. Daher hat sich PDF als feste Gr&ouml;&szlig;e unter den Dateiformaten durchgesetzt. Ein PDF-Dokument kann aus Texten und Bildern entstehen. Gleichzeitig wird in dem PDF-Dokument das Layout beibehalten, das&hellip;' class=\"encyclopedia\">PDF<\/a>_Mail_<a href=\"https:\/\/linux-bibel.at\/index.php\/enzyklopaedie\/pakete\/\" target=\"_self\" title=\"Unter Linux sind Pakete die grundlegenden Bausteine von Software, die von einem Paketmanager verwaltet werden. Ein Paket enth&auml;lt die ausf&uuml;hrbaren Dateien, Konfigurationsdateien, Dokumentation und Metadaten, die f&uuml;r die Installation und Verwaltung der Software ben&ouml;tigt werden.\" class=\"encyclopedia\">Paket<\/a>e&lsquo;<\/p>\n\n\n\n<p>Jeder Mail-Ordner enth&auml;lt:<\/p>\n\n\n\n<p><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Die zugeh\u00f6rigen PDF-Dateien\n\nEine Dateiliste.txt mit den Dateinamen\n\nFalls jemand ein f\u00fcr mich sehr n\u00fctzliches Script ben\u00f6tigt kann das Script gerne testen.\n\nDa hier ich hier keine Dateien hochladen kann.\nHier das Script:\n\n<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code><code>#!\/bin\/bash\n\n# Funktion zur Formatierung von Bytes in MB\nformat_mb() {\n    echo \"$1\" | awk '{printf \"%.2f MB\", $1\/1048576}'\n}\n\n# Maximale Gr\u00f6\u00dfe pro Mail abfragen\nread -p \"Maximale Gr\u00f6\u00dfe pro Mail (in MB): \" max_size_mb\n\n# Validierung der Eingabe\nif ! &#091;&#091; \"$max_size_mb\" =~ ^&#091;0-9]+$ ]] || &#091;&#091; \"$max_size_mb\" -le 0 ]]; then\n    echo \"Ung\u00fcltige Eingabe! Bitte eine positive Zahl eingeben.\"\n    exit 1\nfi\n\n# Umrechnung in Bytes\nmax_size_bytes=$((max_size_mb * 1024 * 1024))\n\n# Quellordner ausw\u00e4hlen\nread -e -p \"Pfad zum PDF-Quellordner: \" source_dir\nif &#091;&#091; ! -d \"$source_dir\" ]]; then\n    echo \"Fehler: '$source_dir' ist kein g\u00fcltiges Verzeichnis!\"\n    exit 1\nfi\n\n# Zielordner erstellen\ntarget_dir=\"$source_dir\/PDF_Mail_Pakete\"\nmkdir -p \"$target_dir\" || exit 1\n\n# PDF-Dateien finden und sortieren\nmapfile -t pdf_files &lt; &lt;(find \"$source_dir\" -maxdepth 1 -type f -iname \"*.pdf\" -exec du -b {} + | sort -rh)\n\n# Variablen initialisieren\ndeclare -a current_group\ncurrent_group_size=0\ngroup_counter=1\n\n# Verarbeitungsfunktion\nprocess_group() {\n    group_dir=\"$target_dir\/Mail_${group_counter}\"\n    mkdir -p \"$group_dir\" || return 1\n    \n    # PDFs kopieren und Liste erstellen\n    for file in \"${current_group&#091;@]}\"; do\n        cp \"$file\" \"$group_dir\/\" || return 1\n        basename \"$file\" &gt;&gt; \"$group_dir\/Dateiliste.txt\"\n    done\n    \n    echo \"Paket $group_counter erstellt: $(format_mb $current_group_size)\"\n    ((group_counter++))\n    current_group=()\n    current_group_size=0\n}\n\n# Hauptverarbeitung\nfor entry in \"${pdf_files&#091;@]}\"; do\n    file_size=$(echo \"$entry\" | awk '{print $1}')\n    file_path=$(echo \"$entry\" | cut -f2-)\n    \n    # Pr\u00fcfe auf zu gro\u00dfe Einzeldateien\n    if &#091;&#091; \"$file_size\" -gt \"$max_size_bytes\" ]]; then\n        echo \"Warnung: '$file_path' ist zu gro\u00df ($(format_mb $file_size)) und wird \u00fcbersprungen!\"\n        continue\n    fi\n\n    # F\u00fcge Datei zur aktuellen Gruppe hinzu\n    if &#091;&#091; $((current_group_size + file_size)) -le $max_size_bytes ]]; then\n        current_group+=(\"$file_path\")\n        ((current_group_size += file_size))\n    else\n        process_group || exit 1\n        current_group+=(\"$file_path\")\n        current_group_size=\"$file_size\"\n    fi\ndone\n\n# Restliche Dateien verarbeiten\nif &#091;&#091; \"${#current_group&#091;@]}\" -gt 0 ]]; then\n    process_group || exit 1\nfi\n\n# Zusammenfassung\necho -e \"\\nFertig! Es wurden $((group_counter - 1)) Pakete erstellt.\"\necho \"Alle Dateien befinden sich in: '$target_dir'\"<\/code><\/code><\/pre>\n<div class=\"pld-like-dislike-wrap pld-custom\">\r\n    <div class=\"pld-like-wrap  pld-common-wrap\">\r\n    <a href=\"javascript:void(0)\" class=\"pld-like-trigger pld-like-dislike-trigger  \" title=\"Gef\u00e4llt mir\" data-post-id=\"19214\" data-trigger-type=\"like\" data-restriction=\"cookie\" data-already-liked=\"0\">\r\n                            <img src=\"https:\/\/linux-bibel.at\/wp-content\/uploads\/2023\/12\/Daumen-Hoch.png\" alt=\"Gef\u00e4llt mir\" \/>\r\n            <\/a>\r\n    <span class=\"pld-like-count-wrap pld-count-wrap\">3    <\/span>\r\n<\/div><div class=\"pld-dislike-wrap  pld-common-wrap\">\r\n    <a href=\"javascript:void(0)\" class=\"pld-dislike-trigger pld-like-dislike-trigger  \" title=\"Gef\u00e4llt mir nicht\" data-post-id=\"19214\" data-trigger-type=\"dislike\" data-restriction=\"cookie\" data-already-liked=\"0\">\r\n                            <img src=\"https:\/\/linux-bibel.at\/wp-content\/uploads\/2023\/12\/Daumen-Runter.png\" alt=\"Gef\u00e4llt mir nicht\" \/>\r\n            <\/a>\r\n    <span class=\"pld-dislike-count-wrap pld-count-wrap\"><\/span>\r\n<\/div><\/div>","protected":false},"excerpt":{"rendered":"<p>Ich habe versucht mir mittels Bash Script die Arbeit etwas zu erleichtern. Ich habe manchmal mehrere Dateianh\u00e4nge (&gt;20) die ich per E-Mail versenden muss. Hierbei nervt es einfach immer auf die Gesamtgr\u00f6\u00dfe der Mailanh\u00e4nge zu schauen um die maximale Mailgr\u00f6\u00dfe nicht zu \u00fcberschreiten. Funktionsweise: Features: Verwendung: Beispielausgabe: Mails mit 20MB max. Anhanggr\u00f6\u00dfe Mail_1 erstellt: 19.84 [&hellip;]<\/p>\n","protected":false},"author":316,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[57,562,61],"tags":[1348,1349],"class_list":["post-19214","post","type-post","status-publish","format-standard","hentry","category-buero","category-e-mail","category-scripts","tag-dateianhaenge-aufteilen","tag-mehrere-mailanhaenge-aufteilen"],"_links":{"self":[{"href":"https:\/\/linux-bibel.at\/index.php\/wp-json\/wp\/v2\/posts\/19214","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/linux-bibel.at\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/linux-bibel.at\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/linux-bibel.at\/index.php\/wp-json\/wp\/v2\/users\/316"}],"replies":[{"embeddable":true,"href":"https:\/\/linux-bibel.at\/index.php\/wp-json\/wp\/v2\/comments?post=19214"}],"version-history":[{"count":5,"href":"https:\/\/linux-bibel.at\/index.php\/wp-json\/wp\/v2\/posts\/19214\/revisions"}],"predecessor-version":[{"id":19219,"href":"https:\/\/linux-bibel.at\/index.php\/wp-json\/wp\/v2\/posts\/19214\/revisions\/19219"}],"wp:attachment":[{"href":"https:\/\/linux-bibel.at\/index.php\/wp-json\/wp\/v2\/media?parent=19214"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/linux-bibel.at\/index.php\/wp-json\/wp\/v2\/categories?post=19214"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/linux-bibel.at\/index.php\/wp-json\/wp\/v2\/tags?post=19214"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}