---
name: "split"
section: "1"
platform: "linux"
package: "coreutils"
version: "9.12-2"
release: "Arch Linux 2026-11-01"
platforms: ["linux", "freebsd", "openbsd", "macos"]
url: "https://new.carta.tech/split"
---

# split(1)

split a file into pieces

## NAME

split - split a file into pieces

## SYNOPSIS

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

## 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**

  generate suffixes of length N (default 2)

- **--additional-suffix=SUFFIX**

  append an additional SUFFIX to file names

- **-b, --bytes=SIZE**

  put SIZE bytes per output file

- **-C, --line-bytes=SIZE**

  put at most SIZE bytes of records per output file

- **-d**

  use numeric suffixes starting at 0, not alphabetic

- **--numeric-suffixes\[=FROM\]**

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

- **-x**

  use hex suffixes starting at 0, not alphabetic

- **--hex-suffixes\[=FROM\]**

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

- **-e, --elide-empty-files**

  do not generate empty output files with '-n'

- **--filter=COMMAND**

  write to shell COMMAND; file name is $FILE

- **-l, --lines=NUMBER**

  put NUMBER lines/records per output file

- **-n, --number=CHUNKS**

  generate CHUNKS output files; see explanation below

- **-t, --separator=SEP**

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

- **-u, --unbuffered**

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

- **--verbose**

  print a diagnostic just before each output file is opened

- **--help**

  display this help and exit

- **--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:

- N

  split into N files based on size of input

- K/N

  output Kth of N to standard output

- l/N

  split into N files without splitting lines/records

- l/K/N

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

- r/N

  like 'l' but use round robin distribution

- 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

Written by Torbjorn Granlund and Richard M. Stallman.

## REPORTING BUGS

Report bugs to: \<bug-coreutils@gnu.org\>.\
 Report any translation bugs to: \<https://translationproject.org/team/\>.\
 GNU coreutils home page: \<https://www.gnu.org/software/coreutils/\>\
 General help using GNU software: \<https://www.gnu.org/gethelp/\>

## COPYRIGHT

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

## SEE ALSO

Full documentation \<https://www.gnu.org/software/coreutils/split\>\
 or available locally via: info '(coreutils) split invocation'
