These docs are under active development and cover the v0.20 Kobicha security model.
On this page
reference 2 min read

truncate

truncate sets a file's size to an exact figure — shrinking it, or extending it.

truncate [options] file...
$ truncate -s 0 logfile        # empty the file
$ truncate -s 1G disk.img      # make a 1 GiB file

Shrinking a file discards everything past the new size. Extending it adds space that reads back as zero bytes; that added space is a hole — it costs no actual storage until something writes real data into it, which is how truncate -s 1G can create a "1 GiB file" instantly.

By default, truncate creates a file that does not yet exist (as an empty file, then sized as asked).

Specifying the size

-s (--size) takes the size. A plain number sets the size outright. A unit suffix scales it: K, M, G, T, … where the bare letter is a power of 1024 (K = 1024) and the letter with B is a power of 1000 (KB = 1000).

A size may also begin with a prefix, which makes it relative to the file's current size:

Prefix Meaning
+ Extend by this much.
- Reduce by this much.
< Shrink to this size only if the file is currently larger ("at most").
> Extend to this size only if the file is currently smaller ("at least").
/ Round the size down to a multiple of this number.
% Round the size up to a multiple of this number.
$ truncate -s +4K notes.txt    # 4 KiB larger than it is now
$ truncate -s '<1M' notes.txt  # cap it at 1 MiB, leave smaller files alone

Options

Option Effect
-s, --size=SIZE Set or adjust the size to SIZE, as described above.
-r, --reference=RFILE Base the size on the current size of RFILE instead of giving a number. Combine with a relative -s to mean "the size of RFILE, adjusted".
-c, --no-create Do not create a file that does not exist; skip it instead.

Exit status

Code Meaning
0 Every file was resized.
1 A file could not be resized — a bad size, or a file that could not be opened.