Linux split文件切分工具的使用

目录

Linux split文件切分工具的使用

0x00、背景介绍

0x01、split介绍

0x02、实际例子解读

1.默认情况

2.根据文件字节大小拆分

3.根据文件行数拆分

4.指定文件数目拆分

5.指定文件拼接的尾数长度

5.添加--verbose参数

0x03、合并文件

1.Linux下合并文件

2.Windows下合并文件


0x00、背景介绍

日常生活中,我们会遇到大文件,像操作系统镜像、高清电影、超大日志文件等等,即便是压缩效果也不大。如下问题博主会经常遇到,简单罗列一下几种常见的情况。

1.通常会遇到大文件,有时候对于超大文件的拷贝到U盘是有限制的,大于多少G就不允许拷贝。
2.另外我们通常会记录程序的操作日志,有时候为了方便定位,即便是做成每天按日期划分,单个文件还是会超级大。
3.在Linux下vim打开超大文件,受到内存硬件原因,往往会遇到打不开或者内存使用过高导致卡机问题。
4.有时候我们并不一定要打开查看整个文件,而是获取其中的一部分,拆分就会显得十分省力。

0x01、split介绍

Linux下有个强大的文件切分的命令工具split,查看帮助文件。

root@Lemon:~/Desktop/split$ split --help
Usage: split [OPTION]... [FILE [PREFIX]]
Output pieces of FILE to PREFIXaa, PREFIXab, ...;
default size is 1000 lines, and default PREFIX is 'x'.如果没有指定文件,或者文件为"-",则从标准输入读取。必选参数对长短选项同时适用。-a, --suffix-length=N   generate suffixes of length N (default 2)--additional-suffix=SUFFIX  append an additional SUFFIX to file names-b, --bytes=SIZE        put SIZE bytes per output file-C, --line-bytes=SIZE   put at most SIZE bytes of records per output file-d                      use numeric suffixes starting at 0, not alphabetic--numeric-suffixes[=FROM]  same as -d, but allow setting the start value-e, --elide-empty-files  do not generate empty output files with '-n'--filter=COMMAND    write to shell COMMAND; file name is $FILE-l, --lines=NUMBER      put NUMBER lines/records per output file-n, --number=CHUNKS     generate CHUNKS output files; see explanation below-t, --separator=SEP     use SEP instead of newline as the record separator;'\0' (zero) specifies the NUL character-u, --unbuffered        immediately copy input to output with '-n r/...'--verbose        在每个输出文件打开前输出文件特征--help        显示此帮助信息并退出--version        显示版本信息并退出The SIZE argument is an integer and optional unit (example: 10K is 10*1024).
Units are K,M,G,T,P,E,Z,Y (powers of 1024) or KB,MB,... (powers of 1000).CHUNKS may be:N       split into N files based on size of inputK/N     output Kth of N to stdoutl/N     split into N files without splitting lines/recordsl/K/N   output Kth of N to stdout without splitting lines/recordsr/N     like 'l' but use round robin distributionr/K/N   likewise but only output Kth of N to stdoutGNU coreutils online help: <http://www.gnu.org/software/coreutils/>
请向<http://translationproject.org/team/zh_CN.html> 报告split 的翻译错误
Full documentation at: <http://www.gnu.org/software/coreutils/split>
or available locally via: info '(coreutils) split invocation'

我们看到split的主要参数

split [--help][--version][-<行数>][-b <字节>][-C <字节>][-l <行数>][要切割的文件][输出文件名]-<行数> : 指定每多少行切成一个小文件
-b<字节> : 指定每多少字节切成一个小文件
--help : 查看在线帮助
--version : 显示版本信息
-C<字节> : 与参数"-b"相似,但是在切 割时将尽量维持每行的完整性
[输出文件名] : 设置切割后文件的前置文件名, split会自动在前置文件名后再加上编号

在没有明确指定拆分后文件的命名方式的情况下,split 会默认采用 x 字符作为文件前缀,拼接下划线,然后拼接aa、ab、ac...dc等,类似x_aa、x_ab、x_dc。可以直接接文件名前缀指定。

添加--verbose参数可以看到拆分创建文件的过程。

添加-a参数,可以设置后缀拼接划分的长度,如-a 5,输出文件结果x_aaaaa、x_aaaab。

下面是man split系统命令的使用手册。

SPLIT(1)                  User Commands                                SPLIT(1)
NAMEsplit - split a file into pieces
SYNOPSISsplit [OPTION]... [FILE [PREFIX]]
DESCRIPTIONOutput pieces of FILE to PREFIXaa, PREFIXab, ...; default size is 1000 lines, and default PREFIX is 'x'.With no FILE, or when FILE is -, read standard input.Mandatory arguments to long options are mandatory for short options too.-a, --suffix-length=Ngenerate suffixes of length N (default 2)--additional-suffix=SUFFIXappend an additional SUFFIX to file names-b, --bytes=SIZEput SIZE bytes per output file-C, --line-bytes=SIZEput at most SIZE bytes of records per output file-d     use numeric suffixes starting at 0, not alphabetic--numeric-suffixes[=FROM]same as -d, but allow setting the start value-e, --elide-empty-filesdo not generate empty output files with '-n'--filter=COMMANDwrite to shell COMMAND; file name is $FILE-l, --lines=NUMBERput NUMBER lines/records per output file-n, --number=CHUNKSgenerate CHUNKS output files; see explanation below-t, --separator=SEPuse SEP instead of newline as the record separator; '\0' (zero) specifies the NUL character-u, --unbufferedimmediately copy input to output with '-n r/...'--verboseprint a diagnostic just before each output file is opened--help display this help and exit--versionoutput version information and exitThe  SIZE argument is an integer and optional unit (example: 10K is 10*1024).  Units are K,M,G,T,P,E,Z,Y (powers of 1024) or KB,MB,... (powersof 1000).CHUNKS may be:N      split into N files based on size of inputK/N    output Kth of N to stdoutl/N    split into N files without splitting lines/recordsl/K/N  output Kth of N to stdout without splitting lines/recordsr/N    like 'l' but use round robin distributionr/K/N  likewise but only output Kth of N to stdout
AUTHORWritten by Torbjorn Granlund and Richard M. Stallman.
REPORTING BUGSGNU coreutils online help: <http://www.gnu.org/software/coreutils/>Report split translation bugs to <http://translationproject.org/team/>
COPYRIGHTCopyright © 2016 Free Software Foundation, Inc.  License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.This is free software: you are free to change and redistribute it.  There is NO WARRANTY, to the extent permitted by law.
SEE ALSOFull documentation at: <http://www.gnu.org/software/coreutils/split>or available locally via: info '(coreutils) split invocation'
GNU coreutils 8.26          February 2017     SPLIT(1)

0x02、实际例子解读

1.默认情况

默认情况下是按照行数拆分,一个文件1000行,拆分后的文件名以x_为前缀,后面拼接aa、ab、ac...dc等。

// split -b 5M test  //拆分文件默认排序
root@Lemon:~/Desktop/split/test$ ls
test
root@Lemon:~/Desktop/split/test$
root@Lemon:~/Desktop/split/test$ split test
root@Lemon:~/Desktop/split/test$ ls
test  xaa  xab  xac  xad
root@Lemon:~/Desktop/split/test$ 

2.根据文件字节大小拆分

每10MB拆分一个文件,也可以指定 K、M、G、T 等单位。

// split -b 5M test  //拆分文件默认排序
root@Lemon:~/Desktop/split/test$ ls
test
root@Lemon:~/Desktop/split/test$
root@Lemon:~/Desktop/split/test$ split -b 5M test
root@Lemon:~/Desktop/split/test$ ls
test  xaa  xab  xac  xad
root@Lemon:~/Desktop/split/test$ 
// split -b 5M -d test  //以序号方式拆分
root@Lemon:~/Desktop/split/test$ split -b 5M -d test
root@Lemon:~/Desktop/split/test$
root@Lemon:~/Desktop/split/test$
root@Lemon:~/Desktop/split/test$ ls
test  x00  x01  x02  x03
root@Lemon:~/Desktop/split/test$ 
// split -b 5M test test_split_   //拼接字符串重命名
root@Lemon:~/Desktop/split/test$
root@Lemon:~/Desktop/split/test$ split -b 5M test test_split_
root@Lemon:~/Desktop/split/test$
root@Lemon:~/Desktop/split/test$
root@Lemon:~/Desktop/split/test$ ls
test  test_split_aa  test_split_ab  test_split_ac  test_split_ad
root@Lemon:~/Desktop/split/test$ 
// split -b 5M -d test test_split_   //拼接字符串重命名,序列按照序号形式
root@Lemon:~/Desktop/split/test$
root@Lemon:~/Desktop/split/test$ split -b 5M -d test test_split_
root@Lemon:~/Desktop/split/test$
root@Lemon:~/Desktop/split/test$
root@Lemon:~/Desktop/split/test$ ls
test  test_split_00  test_split_01  test_split_02  test_split_03
root@Lemon:~/Desktop/split/test$ 

3.根据文件行数拆分

每10行拆分一个文件,使用-和行数,如-10。或者加参数-l和行数,如-l 10。

// split -10 test  //拆分文件默认排序
root@Lemon:~/Desktop/split/test$ ls
test
root@Lemon:~/Desktop/split/test$
root@Lemon:~/Desktop/split/test$ split -10 test
root@Lemon:~/Desktop/split/test$ ls
test  xaa  xab  xac  xad
root@Lemon:~/Desktop/split/test$ 
// split -b 5M -d test  //以序号方式拆分
root@Lemon:~/Desktop/split/test$ split -10 -d test
root@Lemon:~/Desktop/split/test$
root@Lemon:~/Desktop/split/test$
root@Lemon:~/Desktop/split/test$ ls
test  x00  x01  x02  x03
root@Lemon:~/Desktop/split/test$ 
// split -b 5M test test_split_   //拼接字符串重命名
root@Lemon:~/Desktop/split/test$
root@Lemon:~/Desktop/split/test$ split -10 test test_split_
root@Lemon:~/Desktop/split/test$
root@Lemon:~/Desktop/split/test$
root@Lemon:~/Desktop/split/test$ ls
test  test_split_aa  test_split_ab  test_split_ac  test_split_ad
root@Lemon:~/Desktop/split/test$ 
// split -b 5M -d test test_split_   //拼接字符串重命名,序列按照序号形式
root@Lemon:~/Desktop/split/test$
root@Lemon:~/Desktop/split/test$ split -10 -d test test_split_
root@Lemon:~/Desktop/split/test$
root@Lemon:~/Desktop/split/test$
root@Lemon:~/Desktop/split/test$ ls
test  test_split_00  test_split_01  test_split_02  test_split_03
root@Lemon:~/Desktop/split/test$ 

4.指定文件数目拆分

每10行拆分一个文件,使用-和行数,如-10。或者加参数-l和行数,如-l 10。

// split -n 5 test  //拆分文件默认排序
root@Lemon:~/Desktop/split/test$ ls
test
root@Lemon:~/Desktop/split/test$
root@Lemon:~/Desktop/split/test$ split -n 5 test
root@Lemon:~/Desktop/split/test$ ls
test  xaa  xab  xac  xad  xae
root@Lemon:~/Desktop/split/test$
root@Lemon:~/Desktop/split/test$ wc -l x*7 xaa10 xab9 xac10 xad8 xae44 总用量
root@Lemon:~/Desktop/split/test$ 
// split -n 4 -d test  //以序号方式填充
root@Lemon:~/Desktop/split/test$ split -n 4 -d test
root@Lemon:~/Desktop/split/test$
root@Lemon:~/Desktop/split/test$
root@Lemon:~/Desktop/split/test$ ls
test  x00  x01  x02  x03
root@Lemon:~/Desktop/split/test$ 
// split -n 4 test test_split_   //拼接字符串重命名
root@Lemon:~/Desktop/split/test$
root@Lemon:~/Desktop/split/test$ split -n 4 test test_split_
root@Lemon:~/Desktop/split/test$
root@Lemon:~/Desktop/split/test$
root@Lemon:~/Desktop/split/test$ ls
test  test_split_aa  test_split_ab  test_split_ac  test_split_ad
root@Lemon:~/Desktop/split/test$ 
// split -n 4 -d test test_split_   //拼接字符串重命名,序列按照序号形式
root@Lemon:~/Desktop/split/test$
root@Lemon:~/Desktop/split/test$ split -n 4 -d test test_split_
root@Lemon:~/Desktop/split/test$
root@Lemon:~/Desktop/split/test$
root@Lemon:~/Desktop/split/test$ ls
test  test_split_00  test_split_01  test_split_02  test_split_03
root@Lemon:~/Desktop/split/test$ 

5.指定文件拼接的尾数长度

默认为2个字符,可通过-a来指定。

// split -n 5 -a 5 test  //拆分文件默认排序
root@Lemon:~/Desktop/split/test$ ls
test
root@Lemon:~/Desktop/split/test$ split -n 5 -a 5 test
root@Lemon:~/Desktop/split/test$
root@Lemon:~/Desktop/split/test$ ls
test  xaaaaa  xaaaab  xaaaac  xaaaad  xaaaae
root@Lemon:~/Desktop/split/test$
root@Lemon:~/Desktop/split/test$ wc -l x*7 xaaaaa10 xaaaab9 xaaaac10 xaaaad8 xaaaae44 总用量
root@Lemon:~/Desktop/split/test$ 
// split -l 10 -a 4 -d test test_split_  //以序号方式填充,填充长度为4
root@Lemon:~/Desktop/split/test$ ls
test
root@Lemon:~/Desktop/split/test$ split -l 10 -a 4 -d test test_split_
root@Lemon:~/Desktop/split/test$
root@Lemon:~/Desktop/split/test$ ls
test  test_split_0000  test_split_0001  test_split_0002  test_split_0003  test_split_0004
root@Lemon:~/Desktop/split/test$ wc -l test_split_000*10 test_split_000010 test_split_000110 test_split_000210 test_split_00034 test_split_000444 总用量
root@Lemon:~/Desktop/split/test$ 

5.添加--verbose参数

通过添加--verbose参数,获取拆分创建文件的过程。

root@Lemon:~/Desktop/split/test$ split -10 test --verbose
正在创建文件'xaa'
正在创建文件'xab'
正在创建文件'xac'
正在创建文件'xad'
正在创建文件'xae'
root@Lemon:~/Desktop/split/test$
root@Lemon:~/Desktop/split/test$ ls
test  xaa  xab  xac  xad  xae
root@Lemon:~/Desktop/split/test$ wc -l x*10 xaa10 xab10 xac10 xad4 xae44 总用量
root@Lemon:~/Desktop/split/test$ 

0x03、合并文件

既然文件可以拆分,那就一定可以合并。不过最好在拆分完成后将原来的文件输出个md5或sha256完整性校验。

1.Linux下合并文件

使用cat命令将拆分的文件合并成一个文件,可以看出md5值合并后的文件和源文件的大小是一致的:

root@Lemon:~/Desktop/split/test$ ls
test
root@Lemon:~/Desktop/split/test$
root@Lemon:~/Desktop/split/test$ split -10 test
root@Lemon:~/Desktop/split/test$
root@Lemon:~/Desktop/split/test$ ls
test  xaa  xab  xac  xad  xae
root@Lemon:~/Desktop/split/test$ md5sum test
050952b65f63a6190c9b3328dd1afab1  test
root@Lemon:~/Desktop/split/test$
root@Lemon:~/Desktop/split/test$ mv test test_ori
root@Lemon:~/Desktop/split/test$
root@Lemon:~/Desktop/split/test$ cat x* > test
root@Lemon:~/Desktop/split/test$
root@Lemon:~/Desktop/split/test$ md5sum test
050952b65f63a6190c9b3328dd1afab1  test
root@Lemon:~/Desktop/split/test$ ls
test  test_ori  xaa  xab  xac  xad  xae
root@Lemon:~/Desktop/split/test$ 

2.Windows下合并文件

在Windows下要运行cmd,然后用copy命令来进行文件的合并:

copy /b xaa + xab + xac + xad + xae test

Linux split文件切分工具的使用相关推荐

  1. Linux大文件传输工具分享

    sync--一个跨平台的文件传输工具,多用于Linux系统,下面也只介绍Linux上的应用. 这是我在远程传输大文件时找到的最有效便捷的"可断点重传"的工具,最大的优势就是可断点重 ...

  2. linux串口文件传输工具

    起因: 有块开发板需要调试app程序,但没有网口,编译的app没法传进去.如果采用通过把app打包到文件系统中,然后把文件系统重新刷到板子上的方法,非常的不方便,调试也很麻烦. 开发板环境: 架构:a ...

  3. linux下文件对比工具详解(diff、diff3、sdiff、vimdiff和comm)

    工具概述(主要是sdiff和diff): ############################################################################### ...

  4. linux grep 多个文件,Linux多文件查找工具之grep

    1. 简介 grep全称Global Regular Expression Print,全局正则表达式打印. 在这里面提到了三个关键词,我们逐个进行分析,这样有助于我们理解 grep这个命令的作用,1 ...

  5. linux elf 文件查看工具 readelf

    Android在NDK开发工具中提供了readelf,用来帮助开发者查看编译后目标文件的组成结构和具体内容. 常用的有以下几个功能选项: 1)-h或者--file-header 显示在ELF文件头里包 ...

  6. Linux的文件传输工具(WinSCP)付下载连接

    本简介,WinSCP是一个支持SSH的SCP文件传输软件.WinSCP中文版体积小.占用系统资源少.操作简单,只需要连接相应的服务器就可以进行下载和传输文件.重要的是WinSCP中文版软件还有着很多特 ...

  7. linux种子文件制作工具,Centos 制作BT种子并获取BT种子信息

    最近研究了一下linux BT服务器环境的搭建,需要在linux下制作BT种子并获取BT种子信息,整理了一下这个过程: 制作BT种子软件下载地址:http://jaist.dl.sourceforge ...

  8. linux大文件分区工具,磁盘分区工具 GParted

    GParted (Gnome Partition Editor)是一种非常小巧自启动运行光盘,采用X.org,轻量级的Fluxbox窗口管理器,以及最新的2.6 Linux内核建构.其中包含的GPar ...

  9. 文件的切分split和结合工具cat介绍

    从服务器上下载大文件,但网络环境不好,因此将大文件分成多个小文件,在使用rsync同步,会比直接同步或下载好许多. 按行(50000)将大文件分成小文件,每个小文件以'file_'为前缀,数字为其后缀 ...

最新文章

  1. 我为什么离开锤子科技?
  2. Android中的设计模式-状态模式
  3. mysql 一致性读_mysql/mariadb知识点总结(27):一致性读,快照读
  4. qt 配置的相对路径写法
  5. sqlilab--writeup (5~6) 布尔盲注
  6. 如何使用开源工具制作YouTube系列
  7. Ubuntu开机出现“error: invalid environment block“的解决方法
  8. python上传文件进度_python实现进度条--主要用在上传下载文件
  9. 计算机软件技术职业工作规划,软件技术职业规划书.docx
  10. 6425C-Lab5 管理计算机帐户
  11. RGB数据剪切后保存为JPG格式文件的代码(使用jpeglib)
  12. 2021第十届小美赛-“认证杯”数学中国数学建模国际赛
  13. 使用JavaVisualVM远程监控JVM虚拟机
  14. swagger注解 详细说明
  15. Jetson Xavier NX使用Yolov5+DeepStream+TensorRT实现CSI摄像头的目标识别及采坑记录
  16. VC++ 防火墙 Win7 XP MFC
  17. 杜比dss200服务器系统升级包434,杜比数字影院系统DSS200软件升级指南(初稿).pdf
  18. 王者荣耀头像大小怎么调?调整图片尺寸大小工具分享
  19. 小镇走出的大厂女程序员,也害怕努力后仍一无所获
  20. java map替换_在java的Map集合中,怎样更改value的值

热门文章

  1. CTFSHOW 年CTF(web部分)
  2. 实现10进制转换为2进制
  3. Word中嵌入型图片不能完全显示的解决办法
  4. 毕业之前要做的20件事
  5. 安卓期末大作业——购物商城(源码+18页报告)
  6. Unity RawImage背景无缝连接移动
  7. 【Android Audio】dumpsys audio分析【不定期更新文章】
  8. H5+CSS3移动商城界面.七天从零实战课程-信息_详情
  9. 如何调整压力测试工具
  10. Linux通过命令行将英文改成中文