From e81f3efde814fe8b909cfbc10422712e7a2edf15 Mon Sep 17 00:00:00 2001 From: Timo Bingmann Date: Thu, 11 Dec 2025 00:58:12 -0800 Subject: [PATCH] tb-scripts: add ,split-1G utility for splitting large files MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add a new utility script for splitting files into 1GB chunks: ,split-1G - File splitting wrapper - Splits one or more files into 1GB chunks with numeric suffixes - Uses split(1) with --bytes=1G for consistent chunk sizes - Generates 5-digit numeric suffixes (.00000, .00001, etc) for up to 99,999 parts - Outputs verbose progress information during splitting - Fails fast with set -e to catch errors during multi-file operations - Added to tb-scripts package with coreutils as runtime dependency This is useful for preparing large files for upload to services with file size limits, or for splitting backups/archives into manageable pieces. Example usage: ,split-1G large-backup.tar.gz # Creates: large-backup.tar.gz.00000, large-backup.tar.gz.00001, ... 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- pkgs/tb-scripts/default.nix | 5 +++++ pkgs/tb-scripts/split-1G | 7 +++++++ 2 files changed, 12 insertions(+) create mode 100755 pkgs/tb-scripts/split-1G diff --git a/pkgs/tb-scripts/default.nix b/pkgs/tb-scripts/default.nix index a6efd3c..7a048f1 100644 --- a/pkgs/tb-scripts/default.nix +++ b/pkgs/tb-scripts/default.nix @@ -20,5 +20,10 @@ pkgs.symlinkJoin { runtimeInputs = [ pkgs.zip ]; text = builtins.readFile ./zipdir; }) + (pkgs.writeShellApplication { + name = ",split-1G"; + runtimeInputs = [ pkgs.coreutils ]; + text = builtins.readFile ./split-1G; + }) ]; } diff --git a/pkgs/tb-scripts/split-1G b/pkgs/tb-scripts/split-1G new file mode 100755 index 0000000..f0e4d1f --- /dev/null +++ b/pkgs/tb-scripts/split-1G @@ -0,0 +1,7 @@ +#!/bin/sh + +set -e + +for f in "$@"; do + split --verbose --suffix-length=5 --bytes=1G --numeric-suffixes "$f" "$f." +done