Linux split文件切分工具的使用
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文件切分工具的使用相关推荐
- Linux大文件传输工具分享
sync--一个跨平台的文件传输工具,多用于Linux系统,下面也只介绍Linux上的应用. 这是我在远程传输大文件时找到的最有效便捷的"可断点重传"的工具,最大的优势就是可断点重 ...
- linux串口文件传输工具
起因: 有块开发板需要调试app程序,但没有网口,编译的app没法传进去.如果采用通过把app打包到文件系统中,然后把文件系统重新刷到板子上的方法,非常的不方便,调试也很麻烦. 开发板环境: 架构:a ...
- linux下文件对比工具详解(diff、diff3、sdiff、vimdiff和comm)
工具概述(主要是sdiff和diff): ############################################################################### ...
- linux grep 多个文件,Linux多文件查找工具之grep
1. 简介 grep全称Global Regular Expression Print,全局正则表达式打印. 在这里面提到了三个关键词,我们逐个进行分析,这样有助于我们理解 grep这个命令的作用,1 ...
- linux elf 文件查看工具 readelf
Android在NDK开发工具中提供了readelf,用来帮助开发者查看编译后目标文件的组成结构和具体内容. 常用的有以下几个功能选项: 1)-h或者--file-header 显示在ELF文件头里包 ...
- Linux的文件传输工具(WinSCP)付下载连接
本简介,WinSCP是一个支持SSH的SCP文件传输软件.WinSCP中文版体积小.占用系统资源少.操作简单,只需要连接相应的服务器就可以进行下载和传输文件.重要的是WinSCP中文版软件还有着很多特 ...
- linux种子文件制作工具,Centos 制作BT种子并获取BT种子信息
最近研究了一下linux BT服务器环境的搭建,需要在linux下制作BT种子并获取BT种子信息,整理了一下这个过程: 制作BT种子软件下载地址:http://jaist.dl.sourceforge ...
- linux大文件分区工具,磁盘分区工具 GParted
GParted (Gnome Partition Editor)是一种非常小巧自启动运行光盘,采用X.org,轻量级的Fluxbox窗口管理器,以及最新的2.6 Linux内核建构.其中包含的GPar ...
- 文件的切分split和结合工具cat介绍
从服务器上下载大文件,但网络环境不好,因此将大文件分成多个小文件,在使用rsync同步,会比直接同步或下载好许多. 按行(50000)将大文件分成小文件,每个小文件以'file_'为前缀,数字为其后缀 ...
最新文章
- 我为什么离开锤子科技?
- Android中的设计模式-状态模式
- mysql 一致性读_mysql/mariadb知识点总结(27):一致性读,快照读
- qt 配置的相对路径写法
- sqlilab--writeup (5~6) 布尔盲注
- 如何使用开源工具制作YouTube系列
- Ubuntu开机出现“error: invalid environment block“的解决方法
- python上传文件进度_python实现进度条--主要用在上传下载文件
- 计算机软件技术职业工作规划,软件技术职业规划书.docx
- 6425C-Lab5 管理计算机帐户
- RGB数据剪切后保存为JPG格式文件的代码(使用jpeglib)
- 2021第十届小美赛-“认证杯”数学中国数学建模国际赛
- 使用JavaVisualVM远程监控JVM虚拟机
- swagger注解 详细说明
- Jetson Xavier NX使用Yolov5+DeepStream+TensorRT实现CSI摄像头的目标识别及采坑记录
- VC++ 防火墙 Win7 XP MFC
- 杜比dss200服务器系统升级包434,杜比数字影院系统DSS200软件升级指南(初稿).pdf
- 王者荣耀头像大小怎么调?调整图片尺寸大小工具分享
- 小镇走出的大厂女程序员,也害怕努力后仍一无所获
- java map替换_在java的Map集合中,怎样更改value的值