背景

我们跑在linux上程序,有时候打出的log很大,动不动就是几个G。即不方便查阅,也不方便下载、传输。有没有办法(命令最好)把这样的大文件拆分为多个小文件呢?

拆分文件的Linux命令

(1)将文件按照存储大小拆分

如下命令,将954M大小的文件httpd.log,按照500MB每个文件大小进行拆分。拆分后,变为xaaxab两个文件,每个文件大小为477M。

# split -b 500MB httpd.log
# ll -lh
total 1.9G
-rw-r--r-- 1 root root 954M Mar 25 12:35 httpd.log
-rw-r--r-- 1 root root 477M Mar 25 12:38 xaa
-rw-r--r-- 1 root root 477M Mar 25 12:38 xab

(2)将拆分后的文件按照某个Tag命名

如下命令,将954M大小的文件httpd.log,按照200MB每个文件大小进行拆分。拆分后的名字,按照split.log作为Tag。最终拆分后,变为split.logaasplit.logabsplit.logacsplit.logadsplit.logae5个文件,每个文件大小为200M。

# split -b 200M httpd.log split.log
# ll -lh
total 1.9G
-rw-r--r-- 1 root root 954M Mar 25 12:35 httpd.log
-rw-r--r-- 1 root root 200M Mar 25 12:52 split.logaa
-rw-r--r-- 1 root root 200M Mar 25 12:52 split.logab
-rw-r--r-- 1 root root 200M Mar 25 12:52 split.logac
-rw-r--r-- 1 root root 200M Mar 25 12:52 split.logad
-rw-r--r-- 1 root root 154M Mar 25 12:52 split.logae

(3)按照文件内容行数进行拆分

如下命令,将76294B的文件systemlog,按照每个文件200行内容来进行拆分。并用cat xaa | wc -l命令统计拆分后的文件,可见拆分后的每个文件内容均为200行。

# split -l 200 systemlog
# ll
total 172
-rw-rw-r-- 1 root root 76294 Mar 25 12:02 systemlog
-rw-r--r-- 1 root root 14369 Mar 25 12:16 xaa
-rw-r--r-- 1 root root 12795 Mar 25 12:16 xab
-rw-r--r-- 1 root root 13566 Mar 25 12:16 xac
-rw-r--r-- 1 root root 13681 Mar 25 12:16 xad
-rw-r--r-- 1 root root 13840 Mar 25 12:16 xae
-rw-r--r-- 1 root root 8043 Mar 25 12:16 xaf

# cat xaa | wc -l; cat xab | wc -l; cat xac | wc -l; cat xad | wc -l; cat xae | wc -l; cat xaf | wc -l
200
200
200
200
200
99

参考

GitHub 加速计划 / li / linux-dash
10.39 K
1.2 K
下载
A beautiful web dashboard for Linux
最近提交(Master分支:2 个月前 )
186a802e added ecosystem file for PM2 4 年前
5def40a3 Add host customization support for the NodeJS version 4 年前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐