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

 更新时间:2024年04月11日 09:48:24   作者:CN-FuWei  
这篇文章主要介绍了Linux之split文件分割和合并方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

一、简介

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

总结

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

相关文章

  • Linux提示网络不可达问题

    Linux提示网络不可达问题

    这篇文章主要介绍了Linux提示网络不可达问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-12-12
  • Linux中split大文件分割和cat合并文件详解

    Linux中split大文件分割和cat合并文件详解

    这篇文章主要给大家介绍了关于Linux中split大文件分割和cat合并文件的相关资料,文中通过示例代码介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面来一起看看吧。
    2017-07-07
  • Linux程序运行时加载动态库失败的解决方法

    Linux程序运行时加载动态库失败的解决方法

    今天小编就为大家分享一篇关于Linux程序运行时加载动态库失败的解决方法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-04-04
  • Linux中部署MeterSphere实现远程访问

    Linux中部署MeterSphere实现远程访问

    MeterSphere是一站式开源持续测试平台, 涵盖测试跟踪、接口测试、UI 测试和性能测试等功能,全面兼容 JMeter、Selenium 等主流开源标准,有效助力开发和测试团队充分利用云弹性进行高度可扩展的自动化测试,
    本文介绍Linux中部署MeterSphere实现远程访问MeterSphere界面
    2023-10-10
  • Apache启动错误Permission denied: httpd: could not open error log file解决方法

    Apache启动错误Permission denied: httpd: could not open error log

    这篇文章主要介绍了Apache启动错误Permission denied: httpd: could not open error log file解决方法,需要的朋友可以参考下
    2014-07-07
  • Linux VNC安装ssh后ssh无法登录的解决方案

    Linux VNC安装ssh后ssh无法登录的解决方案

    VNC 服务器不能使用 SSH 22 端口登录的问题可能由多种原因引起,本文给大家介绍了Linux VNC安装ssh后ssh无法登录的解决方案,文中通过有详细解决方案,需要的朋友可以参考下
    2024-11-11
  • .htaccess使用方法总结

    .htaccess使用方法总结

    在利用.htaccess的Rewrite规则实现Discuz论坛的伪静态链接中已经提到过了.htaccess的重定向的使用,这里让我们来比较全面的了解一下.htaccess吧。
    2010-12-12
  • Nginx 下配置SSL证书的方法

    Nginx 下配置SSL证书的方法

    默认 Nginx 是没有 ssl 模块的,而我的 VPS 默认装的是 Nginx 0.7.63 ,顺带把 Nginx 升级到 0.7.64 并且 配置 ssl 模块方法如下
    2010-08-08
  • linux服务器下通过iptables+Denyhost抵御暴力破解的配置方法

    linux服务器下通过iptables+Denyhost抵御暴力破解的配置方法

    这篇文章主要介绍了linux服务器下通过iptables + Denyhost抵御暴力破解的方法,需要的朋友可以参考下
    2014-11-11
  • apache密码生成工具htpasswd使用详解

    apache密码生成工具htpasswd使用详解

    本文主要介绍了1、 htpasswd的作用与安装,2、 htpasswd命令详解,3、 htpasswd的实例,4、 htpasswd的应用,有需要的小伙伴参考下
    2015-01-01

最新评论