Linux split文件切分工具的使用

本文介绍了Linux下split命令的使用,包括按行数、字节数、固定数量拆分文件,并展示了如何指定文件名前缀、后缀长度和添加verbose参数。此外,还详细讲解了如何在Linux和Windows环境下合并已拆分的文件,确保文件内容完整无误。

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 input
  K/N     output Kth of N to stdout
  l/N     split into N files without splitting lines/records
  l/K/N   output Kth of N to stdout without splitting lines/records
  r/N     like 'l' but use round robin distribution
  r/K/N   likewise but only output Kth of N to stdout

GNU 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       &nb
`split`命令是Linux系统中用于将大文件分割成较小文件的一个非常有用的工具。它支持基于行数、字节数等标准对文件进行切割,并允许用户自定义输出文件名前缀。 **基本语法** ```bash split [选项]... [输入文件[输出前缀]] ``` 如果没有指定输入文件,则默认从标准输入读取数据;如果未提供输出前缀,默认会创建名为 `x*` 的分片文件(例如:`xaa`, `xab`, 等)。 ### 使用示例 #### 按大小拆分文件 如果你想按照每个文件包含固定的字符数目来切分原始文件,可以使用 `-b` 参数: ```bash # 将 largefile.txt 切分成每部分最多含50MB的数据块 split -b 50m largefile.txt output_prefix_ ``` 这里生成的新文件将会像 `output_prefix_aa`, `output_prefix_ab` 这样命名。 #### 根据行数划分文本内容 若需要依据特定行数来进行分离操作,那么你可以利用 `-l` 或者更常用的现代版本中的 `--lines=`: ```bash # 把 mytextfile.txt 分割为若干个小文件,每个小文件含有2048条记录(行) split --lines=2048 mytextfile.txt chunk_of_mytextfile_ ``` 以上命令会产生类似于 `chunk_of_mytextfile_aa`, `chunk_of_mytextfile_ab` 的片段集合。 #### 自动编号并添加字母后缀给产生的文件们 对于希望让结果更为直观易懂的情况来说,可通过结合其他GNU核心实用程序如`seq`(序列) 来达到此目的: ```bash split -d -a 3 somebigdata.csv data_part_ # 数字模式(-d), 设置长度为3位(-a 3),以数字作为后缀 ``` 这将依次建立诸如 `data_part_000`, `data_part_001` ... 直至所有原文件内的信息都被妥善处理完毕为止。 ### 其他常用功能点 - **仅显示而不实际保存到磁盘上**: 如果只想预览而不想真正地去制作副本的话,可以在前面加上`cat`配合管道符一起运用。 ```bash cat hugefile | split -b 10k - ``` 请注意,在这种情形下你需要手动捕获stdout流里的临时文件路径再进一步加工或者直接通过终端查看它们的内容。 总之,掌握好`split`这个小巧却强大的指令能够极大地方便我们日常工作中涉及到大型文档管理的任务流程!
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

byzf

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值