Section (1) truncate
truncate — shrink or extend the size of a file to the specified size
Shrink or extend the size of each FILE to the specified size
A FILE argument that does not exist is created.
If a FILE is larger than the specified size, the extra data is lost. If a FILE is shorter, it is extended and the extended part (hole) reads as zero bytes.
Mandatory arguments to long options are mandatory for short options too.
do not create any files
treat SIZE as number of IO blocks instead of bytes
base size on RFILE
set or adjust the file size by SIZE bytes
display this help and exit
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 (powers of 1024) or KB,MB,... (powers of 1000). Binary prefixes can be used, too: KiB=K, MiB=M, and so on.
SIZE may also be prefixed by one of the following modifying characters: _zsingle_quotesz_+_zsingle_quotesz_ extend by, _zsingle_quotesz_−_zsingle_quotesz_ reduce by, _zsingle_quotesz_<_zsingle_quotesz_ at most, _zsingle_quotesz_>_zsingle_quotesz_ at least, _zsingle_quotesz_/_zsingle_quotesz_ round down to multiple of, _zsingle_quotesz_%_zsingle_quotesz_ round up to multiple of.
GNU coreutils online help: <https://www.gnu.org/software/coreutils/>
Report any translation bugs to <https://translationproject.org/team/>
Full documentation <https://www.gnu.org/software/coreutils/truncate>
or available locally via: info _zsingle_quotesz_(coreutils) truncate invocation_zsingle_quotesz_
Copyright © 2019 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.
Section (2) truncate
truncate, ftruncate — truncate a file to a specified length
#include <unistd.h> #include <sys/types.h>
||const char *path,|
ftruncate() functions cause the
regular file named by
path or referenced by
fd to be truncated to
a size of precisely
If the file previously was larger than this size, the extra data is lost. If the file previously was shorter, it is extended, and the extended part reads as null bytes (_zsingle_quotesz_ _zsingle_quotesz_).
The file offset is not changed.
If the size changed, then the st_ctime and st_mtime fields (respectively, time of last status change and time of last modification; see inode(7)) for the file are updated, and the set-user-ID and set-group-ID mode bits may be cleared.
ftruncate(), the file
must be open for writing; with
truncate(), the file must be writable.
On success, zero is returned. On error, −1 is
errno is set
Search permission is denied for a component of the path prefix, or the named file is not writable by the user. (See also path_resolution(7).)
pathpoints outside the process_zsingle_quotesz_s allocated address space.
lengthis larger than the maximum file size. (XSI)
lengthis negative or larger than the maximum file size.
An I/O error occurred updating the inode.
The named file is a directory.
Too many symbolic links were encountered in translating the pathname.
A component of a pathname exceeded 255 characters, or an entire pathname exceeded 1023 characters.
The named file does not exist.
A component of the path prefix is not a directory.
The underlying filesystem does not support extending a file beyond its current size.
The operation was prevented by a file seal; see fcntl(2).
The named file resides on a read-only filesystem.
The file is an executable file that is being executed.
ftruncate() the same
errors apply, but instead of things that can be wrong with
path, we now have
things that can be wrong with the file descriptor,
fdis not a valid file descriptor.
- EBADF or EINVAL
fdis not open for writing.
fddoes not reference a regular file or a POSIX shared memory object.
- EINVAL or EBADF
The file descriptor
fdis not open for writing. POSIX permits, and portable applications should handle, either error for this case. (Linux produces EINVAL.)
ftruncate() can also be used
to set the size of a POSIX shared memory object; see
The details in DESCRIPTION are for XSI-compliant systems.
For non-XSI-compliant systems, the POSIX standard allows two
length exceeds the
file length (note that
truncate() is not specified at all in such
an environment): either returning an error, or extending the
file. Like most UNIX implementations, Linux follows the XSI
requirement when dealing with native filesystems. However,
some nonnative filesystems do not permit
ftruncate() to be used to extend a file
beyond its current length: a notable example on Linux is
The original Linux
ftruncate() system calls were not designed
to handle large file offsets. Consequently, Linux 2.4 added
ftruncate64() system calls that handle
large files. However, these details can be ignored by
applications using glibc, whose wrapper functions
transparently employ the more recent system calls where they
On some 32-bit architectures, the calling signature for these system calls differ, for the reasons described in syscall(2).
A header file bug in glibc 2.12 meant that the minimum
required to expose the declaration of
ftruncate() was 200809L instead of 200112L.
This has been fixed in later glibc versions.
This page is part of release 5.04 of the Linux
man-pages project. A
description of the project, information about reporting bugs,
and the latest version of this page, can be found at
Copyright (c) 1983, 1991 The Regents of the University of California.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
3. All advertising materials mentioning features or use of this software
must display the following acknowledgement:
This product includes software developed by the University of
California, Berkeley and its contributors.
4. Neither the name of the University nor the names of its contributors
may be used to endorse or promote products derived from this software
without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS_zsingle_quotesz__zsingle_quotesz_ AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
(#)truncate.2 6.9 (Berkeley) 3/10/91
Modified 1993-07-24 by Rik Faith <faithcs.unc.edu>
Modified 1996-10-22 by Eric S. Raymond <esrthyrsus.com>
Modified 1998-12-21 by Andries Brouwer <aebcwi.nl>
Modified 2002-01-07 by Michael Kerrisk <mtk.manpagesgmail.com>
Modified 2002-04-06 by Andries Brouwer <aebcwi.nl>
Modified 2004-06-23 by Michael Kerrisk <mtk.manpagesgmail.com>