SPLIT(1) User Commands SPLIT(1)

# [NAME](#NAME)

split - split a file into pieces

# [SYNOPSIS](#SYNOPSIS)

**split** \[*OPTION*]... \[*FILE* \[*PREFIX*]]

# [DESCRIPTION](#DESCRIPTION)

Output pieces of FILE to PREFIXaa, PREFIXab, ...; default size is 1000 lines, and default PREFIX is 'x'.

With no FILE, or when FILE is -, read standard input.

Mandatory arguments to long options are mandatory for short options too.

[**-a, --suffix-length=N**](#a,)

generate suffixes of length N (default 2)

[**--additional-suffix=SUFFIX**](#additional)

append an additional SUFFIX to file names

[**-b, --bytes=SIZE**](#b,)

put SIZE bytes per output file

[**-C, --line-bytes=SIZE**](#C,)

put at most SIZE bytes of records per output file

[**-d**](#d)

use numeric suffixes starting at 0, not alphabetic

[**--numeric-suffixes\[=FROM\]**](#numeric)

same as **-d**, but allow setting the start value

[**-x**](#x)

use hex suffixes starting at 0, not alphabetic

[**--hex-suffixes\[=FROM\]**](#hex)

same as **-x**, but allow setting the start value

[**-e, --elide-empty-files**](#e,)

do not generate empty output files with '-n'

[**--filter=COMMAND**](#filter=COMMAND)

write to shell COMMAND; file name is $FILE

[**-l, --lines=NUMBER**](#l,)

put NUMBER lines/records per output file

[**-n, --number=CHUNKS**](#n,)

generate CHUNKS output files; see explanation below

[**-t, --separator=SEP**](#t,)

use SEP instead of newline as the record separator; '\\0' (zero) specifies the NUL character

[**-u, --unbuffered**](#u,)

immediately copy input to output with '-n r/...'

[**--verbose**](#verbose)

print a diagnostic just before each output file is opened

[**--help**](#help)

display this help and exit

[**--version**](#version)

output version information and exit

The SIZE argument is an integer and optional unit (example: 10K is 10\*1024). Units are K,M,G,T,P,E,Z,Y,R,Q (powers of 1024) or KB,MB,... (powers of 1000). Binary prefixes can be used, too: KiB=K, MiB=M, and so on.

## [CHUNKS may be:](#CHUNKS_may_be:)

[N](#N)

split into N files based on size of input

[K/N](#K/N)

output Kth of N to standard output

[l/N](#l/N)

split into N files without splitting lines/records

[l/K/N](#l/K/N)

output Kth of N to standard output without splitting lines/records

[r/N](#r/N)

like 'l' but use round robin distribution

[r/K/N](#r/K/N)

likewise but only output Kth of N to standard output

**-n** (except **-nr**) will buffer to $TMPDIR, defaulting to */tmp*, if the input size cannot easily be determined.

# [AUTHOR](#AUTHOR)

Written by Torbjorn Granlund and Richard M. Stallman.

# [REPORTING BUGS](#REPORTING_BUGS)

Report bugs to: &lt;bug-coreutils@gnu.org&gt;.  
Report any translation bugs to: &lt;https://translationproject.org/team/&gt;.  
GNU coreutils home page: &lt;https://www.gnu.org/software/coreutils/&gt;  
General help using GNU software: &lt;https://www.gnu.org/gethelp/&gt;

# [COPYRIGHT](#COPYRIGHT)

Copyright © 2026 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later &lt;https://gnu.org/licenses/gpl.html&gt;.  
This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law.

# [SEE ALSO](#SEE_ALSO)

Full documentation &lt;https://www.gnu.org/software/coreutils/split&gt;  
or available locally via: info '(coreutils) split invocation'

October 2026 GNU coreutils 9.12

---

Document: split(1) from coreutils 9.12-r5 (Chainguard OS)
Source: https://git.savannah.gnu.org/git/coreutils.git
