如何在Linux中使用截断命令
如何在Linux中使用truncate命令。
Linux truncate命令通常用于将每个FILE的大小缩小或者扩展到指定的大小。
文件的最终大小取决于首字母。
如果FILE(例如归档文件或者日志文件)大于指定的大小,则会丢失另外的数据,但是如果FILE较短,则会对其进行扩展,并且扩展部分(孔)的读数为零字节。
显示的命令已在CentOS 7机器和Ubuntu 16.04服务器上进行了测试。
大多数Linux发行版附带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
常见的截断选项
-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
使用截断时,SIZE参数必须为整数和可选单位(例如:10K为10 * 1024)。
使用的单位为K,M,G,T,P,E,Z,Y(1024的幂)或者KB,MB,...(1000的幂)。
SIZE参数也可以以以下修饰字符之一作为前缀:'+'扩展,'-'减少,'<<,最多'>'至少,'/'向下舍入为'% '取整。
截断用法示例
以下是truncate命令的最常见用法示例。
1.使用truncate清除文件内容
# truncate -s 0 file
这对于例如清除日志文件很有用。
这比手动删除文件并为新文件做些触摸要好。
截断过程基本上删除了文件的所有内容。
它不会删除文件本身,但会将其作为零字节文件保留在磁盘上。
例如,让我们使用truncate将/var/log/syslog清除为0个字节。
# 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
2.将文件截断为特定大小
下面的示例将文件截断为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”。
3.使用截断扩展文件大小
我们也可以将文件的大小从当前扩展到所需状态。
使用-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。
4.通过截断来减小文件大小
假设我们有一个500K的文件,并且希望将其缩小到250K。
我们将使用-s选项并指定大小。
例如
$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。