linux truncate命令详解

Linux truncate命令通常用于将每个文件的大小缩小或扩展到指定的大小。文件的最终大小取决于初始大小。如果文件(例如存档文件或日志文件)大于指定的大小,则会丢失额外的数据,但如果文件较短,则会对其进行扩展,扩展部分(孔)的读数为零字节。

显示的命令在CentOS 7机器和Ubuntu 16.04服务器上进行了测试。大多数Linux发行版附带truncate命令。如果您的系统没有truncate命令,对于Ubuntu/Debian系统,它由coreutils包提供。

$ sudo apt-get install coreutils
$ dpkg -l | grep coreutils
coreutils 8.25-2ubuntu3~16.04 amd64 GNU core utilities

对于CentOS 7:

# yum provides truncate
coreutils-8.22-18.el7.x86_64 : A set of basic GNU tools commonly used in shell scripts
Repo : base
Matched from:
Filename : /usr/bin/truncate

如果未安装,请使用:

$ sudo yum-y install coreutils

truncate选项

-c, --no-create --> do not create any files
-o, --io-blocks --> treat SIZE as number of IO blocks instead of bytes
-r, --reference=RFILE --> base size on RFILE
-s, --size=SIZE --> set or adjust the file size by SIZE bytes
--help --> display this help and exit
--version --> output version information and exit

使用truncate时,SIZE参数必须是整数和可选单位(例如:10K是10*1024)。使用的单位是K、M、G、T、P、E、Z、Y(1024的幂)或KB、MB、…(1000的幂)。

SIZE参数的前缀也可以是以下修改字符之一:“+”扩展“,-”减少“,”<”最多“,>”至少“/”向下舍入到“%”的倍数,“%”向上舍入到“%”的倍数。

truncate用法示例

下面是truncate命令最常见的用法示例。

使用truncate清除文件的内容

    # truncate -s 0 file

这非常有用,例如用于清除日志文件。这比手动删除文件并触摸新文件要好。截断过程基本上删除了文件的所有内容。它不会删除文件本身,但会将其作为零字节文件留在磁盘上。

# du -sh /var/log/syslog
616K /var/log/syslog

# truncate -s 0 /var/log/syslog

如果我们再次检查文件大小,它应该是0字节。

# du -sh /var/log/syslog
0 /var/log/syslog

请注意,truncate命令将保留文件权限和所有权。您可以使用ls-lh命令进行确认:

# ls -lh /var/log/syslog
-rw-r----- 1 syslog adm 0 Mar 17 18:34 /var/log/syslog

将文件truncate为特定大小的步骤

下面的示例将文件截断为100字节大小。

# touch file.txt
#  ls -lh file.txt 
-rw-r--r-- 1 root root 0 Mar 17 18:39 file.txt 
# truncate -s 100 file.txt

现在检查文件大小:

ls-lh file.txt  
\-rw-r--r--1根根目录100 Mar 17 18:40 file.txt

要将文件截断为100 KB,请执行以下操作:

# truncate -s 100K file.txt
# ls -lh file.txt 
-rw-r--r-- 1 root root 100K Mar 17 18:41 file.txt

根据需要,可使用M、G、T、P、E、Z和Y代替“K”。

使用truncate扩展文件大小

您还可以将文件大小从当前扩展到所需的状态。使用大小为+的选项-s。

$ touch file.txt
$ truncate -s 100K file.txt
$ ls -lh file.txt 
-rw-r--r-- 1 jmutai wheel 100K Mar 18 13:12 file.txt

$ truncate -s +200K file.txt
$ ls -lh file.txt 
-rw-r--r-- 1 jmutai wheel 300K Mar 18 13:12 file.txt

这将通过添加额外的200K将文件大小从100K扩展到300K。

使用truncate减少文件大小

假设您有一个500K文件,并希望将其缩小到250K。您将使用-s选项并指定-in大小。例如

$ ls -lh file.txt -rw-r--r-- 1 jmutai wheel 500K Mar 18 13:15 file.txt
$ truncate -s -250K file.txt
$ ls -lh file.txt 
-rw-r--r-- 1 jmutai wheel 250K Mar 18 13:15 file.txt

您可以看到当前大小已更改为250K。

在本教程中,hope帮助您理解Linux truncate命令,将文件更改为指定大小。

linux sort命令详解

发表我的评论

电子邮件地址不会被公开。 必填项已用*标注

ajax-loader