---
name: "truncate"
section: "1"
platform: "macos"
package: "file_cmds"
version: "479"
release: "macOS 26.5"
platforms: ["linux", "freebsd", "macos"]
url: "https://new.carta.tech/truncate"
---

# truncate(1)

truncate, extend the length of files, or perform space management in files

## NAME

**truncate** – truncate, extend the length of files, or perform space management in files

## SYNOPSIS

**truncate** \[**-c**\] **-s** \[**+**\|**-**\|**%**\|**/**\] *size* \[**SUFFIX**\] *file ...*

**truncate** \[**-c**\] **-r** *rfile* *file ...*

## DESCRIPTION

The **truncate** utility adjusts the length of each regular file given on the command-line, or performs space management with the given offset and the length over a regular file given on the command-line.

The following options are available:

- **-c**

  Do not create files if they do not exist. The **truncate** utility does not treat this as an error. No error messages are displayed and the exit value is not affected.

- **-r** *rfile*

  Truncate or extend files to the length of the file *rfile*.

- **-s**

  \[**+**\|**-**\|**%**\|**/**\] *size* \[**SUFFIX**\] If the *size* argument is preceded by a plus sign (**+**), files will be extended by this number of bytes. If the *size* argument is preceded by a dash (**-**), file lengths will be reduced by no more than this number of bytes, to a minimum length of zero bytes. If the *size* argument is preceded by a percent sign (**%**), files will be round up to a multiple of this number of bytes. If the *size* argument is preceded by a slash sign (**/**), files will be round down to a multiple of this number of bytes, to a minimum length of zero bytes. Otherwise, the *size* argument specifies an absolute length to which all files should be extended or reduced as appropriate.

The *size*, *offset* and *length* arguments may be suffixed with one of **K**, **M**, **G** or **T** (either upper or lower case) to indicate a multiple of Kilobytes, Megabytes, Gigabytes or Terabytes respectively.

Exactly one of the **-r** or **-s** options must be specified.

If a file is made smaller, its extra data is lost. If a file is made larger, it will be extended as if by writing bytes with the value zero. If the file does not exist, it is created unless the **-c** option is specified.

Note that, while truncating a file causes space on disk to be freed, extending a file does not cause space to be allocated. To extend a file and actually allocate the space, it is necessary to explicitly write data to it, using (for example) the shell's ‘\>\>’ redirection syntax, or [dd(1)](/dd/1.md).

## EXIT STATUS

The **truncate** utility exits 0 on success, and \>0 if an error occurs. If the operation fails for an argument, **truncate** will issue a diagnostic and continue processing the remaining arguments.

## EXAMPLES

Adjust the size of the file *test\_file* to 10 Megabytes but do not create it if it does not exist:

```
truncate -c -s +10M test_file
```

Same as above but create the file if it does not exist:

```
truncate -s +10M test_file
ls -l test_file
-rw-r--r--  1 root  wheel  10485760 Jul 22 18:48 test_file
```

Adjust the size of *test\_file* to the size of the kernel and create another file *test\_file2* with the same size:

```
truncate -r /boot/kernel/kernel test_file test_file2
ls -l /boot/kernel/kernel test_file*
-r-xr-xr-x  1 root  wheel    31352552 May 15 14:18 /boot/kernel/kernel*
-rw-r--r--  1 root  wheel    31352552 Jul 22 19:15 test_file
-rw-r--r--  1 root  wheel    31352552 Jul 22 19:15 test_file2
```

Downsize *test\_file* in 5 Megabytes:

```
# truncate -s -5M test_file
ls -l test_file*
-rw-r--r--  1 root  wheel    26109672 Jul 22 19:17 test_file
-rw-r--r--  1 root  wheel    31352552 Jul 22 19:15 test_file2
```

## SEE ALSO

[dd(1)](/dd/1.md), [touch(1)](/touch/1.md), [fspacectl(2)](/fspacectl/2.md), [truncate(2)](/truncate/2.md)

## STANDARDS

The **truncate** utility conforms to no known standards.

## HISTORY

The **truncate** utility first appeared in FreeBSD 4.2.

## AUTHORS

The **truncate** utility was written by Sheldon Hearn ⟨*sheldonh@starjuice.net*⟩. Hole-punching support of this utility was developed by Ka Ho Ng ⟨*khng@FreeBSD.org*⟩.
