开发者

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

开发者 https://www.devze.com 2024-08-10 11:34 出处:网络 作者: CN-FuWei
目录一、简介二、用法2.1、生成测试大文件2.2、分割2.3、合并总结一、简介 linux服务器普通的文件上传下载一般用 sz rz 就可以满足要求了,但是遇到大文件(超过4G)时就不好使了。
目录
  • 一、简介
  • 二、用法
    • 2.1、生成测试大文件
    • 2.2、分割
    • 2.3、合并
  • 总结

    一、简介

    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 r编程客栈oot 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 androidNov 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/lophpg.这个命令能分割出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 randroidoot 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

    总结

    以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程客栈(www.devze.com)。

    0

    精彩评论

    暂无评论...
    验证码 换一张
    取 消

    关注公众号