I didn't write this. Indeed, I don't know who did. But it's a very useful program. Modified it to allow large chunk sizes, using a long long. Also modified to use a BLOCK_SIZE of 1024 bytes, instead of reading 1 byte at a time. This should be much faster, albeit less tolerant of strange block sizes. Indeed, it will error out if you use a size that isn't evenly divisible by BLOCK_SIZE (currently 1024). From the comment at the top of the C source: Split a binary file into pieces of a specified (or default) size. Usage: bsplit [[-nnn] [-] filename] A -nnn bytecount option sets the split piece size for subsequent files. Stdin is assumed if a bare - is given, or if no files are specified. Multiple filenames may be specified. No check is made to see whether the output files (named with the input file name and the suffixes "-001", "-002", etc.) exist.