Linux之split文件分割和合并方式

本站所有内容来自互联网收集,仅供学习和交流,请勿用于商业用途。如有侵权、不妥之处,请第一时间联系我们删除!Q群:迪思分享

免费资源网 – https://freexyz.cn/

一、简介

Linux服务器普通的文件上传下载一般用 sz rz 就可以满足要求了,但是遇到大文件(超过4G)时就不好使了。

这是就可以通过将大文件分割为小文件传输,之后再进行文件合并即可。

二、用法

split命令格式:

split + 参数 + 要分割的文件 + 分割后子文件前缀

参数:

参数解释-a后缀长度,例如-a3表示后缀长度为3-l按照行数将文件分割成多个小文件-b按照字节数将文件分割成多个小文件-d指定后缀编码为数字,默认编码为字母

2.1、生成测试大文件

[root@docker][19:13:12][OK] ~ #head -c 10M < /dev/urandom >cuttingLog [root@docker][19:13:15][OK] ~ #ll -h total 10M -rw-r–r– 1 root root 10M Nov 18 19:13 cuttingLog

2.2、分割

【1】每100行分成一个文件,后缀为数字,后缀长度为3位,前缀为log.

split -a3 -l 100 -d cuttingLog log.

[root@docker][19:13:17][OK] ~ #split -a3 -l 100 -d cuttingLog log. [root@docker][19:15:30][OK] ~ #ll total 21328 -rw——-. 1 root root 1640 Nov 7 23:43 anaconda-ks.cfg -rw-r–r– 1 root root 10485760 Nov 18 19:13 cuttingLog -rw-r–r– 1 root root 23325 Nov 18 19:15 log.000 -rw-r–r– 1 root root 22546 Nov 18 19:15 log.001 -rw-r–r– 1 root root 22925 Nov 18 19:15 log.002 -rw-r–r– 1 root root 27279 Nov 18 19:15 log.003 -rw-r–r– 1 root root 29060 Nov 18 19:15 log.004 -rw-r–r– 1 root root 22118 Nov 18 19:15 log.005 -rw-r–r– 1 root root 25845 Nov 18 19:15 log.006 -rw-r–r– 1 root root 25865 Nov 18 19:15 log.007 -rw-r–r– 1 root root 25474 Nov 18 19:15 log.008 -rw-r–r– 1 root root 22842 Nov 18 19:15 log.009 -rw-r–r– 1 root root 26265 Nov 18 19:15 log.010 …

【2】每100行分成一个文件,后缀为字母,后缀长度为3位,前缀为log.

split -a3 -l 100 cuttingLog log.

[root@docker][19:16:58][OK] ~ #split -a3 -l 100 cuttingLog log. [root@docker][19:17:01][OK] ~ #ll total 21328 -rw——-. 1 root root 1640 Nov 7 23:43 anaconda-ks.cfg -rw-r–r– 1 root root 10485760 Nov 18 19:13 cuttingLog -rw-r–r– 1 root root 23325 Nov 18 19:17 log.aaa -rw-r–r– 1 root root 22546 Nov 18 19:17 log.aab -rw-r–r– 1 root root 22925 Nov 18 19:17 log.aac -rw-r–r– 1 root root 27279 Nov 18 19:17 log.aad -rw-r–r– 1 root root 29060 Nov 18 19:17 log.aae -rw-r–r– 1 root root 22118 Nov 18 19:17 log.aaf -rw-r–r– 1 root root 25845 Nov 18 19:17 log.aag -rw-r–r– 1 root root 25865 Nov 18 19:17 log.aah -rw-r–r– 1 root root 25474 Nov 18 19:17 log.aai -rw-r–r– 1 root root 22842 Nov 18 19:17 log.aaj …

【3】每2M分成一个文件,后缀为字数字,后缀长度为2位,前缀为log.

split -b 2M -d cuttingLog log.

[root@docker][19:20:26][OK] ~ #split -b 2M -d cuttingLog log. [root@docker][19:20:29][OK] ~ #ll -h total 21M -rw——-. 1 root root 1.7K Nov 7 23:43 anaconda-ks.cfg -rw-r–r– 1 root root 10M Nov 18 19:13 cuttingLog -rw-r–r– 1 root root 2.0M Nov 18 19:20 log.00 -rw-r–r– 1 root root 2.0M Nov 18 19:20 log.01 -rw-r–r– 1 root root 2.0M Nov 18 19:20 log.02 -rw-r–r– 1 root root 2.0M Nov 18 19:20 log.03 -rw-r–r– 1 root root 2.0M Nov 18 19:20 log.04

注意:当分割后文件的数量大于后缀能表达的最大文件数时,会报错:split: output file suffixes exhausted

例如:split -a1 -b 2048 -d /test/logs.txt /test/logs/log.这个命令能分割出14个文件,但是使用-a1命令使得后缀只能表示10个文件,所以实际文件数量超出后缀能表达的文件数量,会报错。

2.3、合并

[root@docker][19:27:03][OK] ~ #cat log.* >cuttingLog_bak [root@docker][19:27:30][OK] ~ #ll -h total 31M -rw——-. 1 root root 1.7K Nov 7 23:43 anaconda-ks.cfg -rw-r–r– 1 root root 10M Nov 18 19:13 cuttingLog -rw-r–r– 1 root root 10M Nov 18 19:27 cuttingLog_bak -rw-r–r– 1 root root 2.0M Nov 18 19:20 log.00 -rw-r–r– 1 root root 2.0M Nov 18 19:20 log.01 -rw-r–r– 1 root root 2.0M Nov 18 19:20 log.02 -rw-r–r– 1 root root 2.0M Nov 18 19:20 log.03 -rw-r–r– 1 root root 2.0M Nov 18 19:20 log.04 [root@docker][19:27:32][OK] ~ #md5sum cuttingLog* a583e4c5c9de6618b89aa9fc909cc3c8 cuttingLog a583e4c5c9de6618b89aa9fc909cc3c8 cuttingLog_bak

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持。


© 版权声明
THE END
★喜欢这篇文章吗?喜欢的话,麻烦动动手指支持一下!★
点赞10 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容