文本切割工具——split命令的使用

2024-06-03  本文已影响0人  moutory

前言

在工作中偶尔会需要将一个大文件切割为若干个小文件的需求,其实这种功能当然可以用代码来实现,不过linux系统就已经自带了split命令可以让我们快速实现文件切割这个功能,还支持我们进行文件的重命名,下面进入正题来讲一下这个命令的使用。

一、split命令的语法

split [选项]... [输入 [前缀]]
参数 含义
- -b 或者-- bytes=size 对file进行切分 每个小文件大小为size 可以指定单位b,k,m
- -l -- lines=number 对file进行切分 每个文件都有number行
- -a num 后缀长度,和生成切割后的文件名相关
-d 表示切割后的文件使用数字后缀
- -c <字节> 与参数"-b"相似,但是在切割时将尽量维持每行的完整性

二、案例演示

准备测试数据,生成一个数字组成的文件,总大小48K

echo {1..10000} > a.txt
image.png
案例1:根据10K作为一个单位进行文本切割
split -b 10k a.txt 
执行结果1
可以看到,文件确实被分割成多个文件了,而且是以xaa开始依次递增排序。
案例2:根据100行作为一个单位进行文本切割
split -l 100 a.txt 
执行结果2
案例3:按100行进行切割,且前缀名统一为“result”,后缀部分改成用4位数字来表示
 split -l 100 a.txt -d -a 4 result

下面来简单介绍一下这里的参数作用

image.png

三、命令的缺陷和优化方案——让命令支持自定义后缀

相信各位读者也发现了,split命令确实十分强大,但是对于文件的命名上还不够灵活,不支持命名后缀,比如我希望生成的格式是result + 4位数字 + .csv的文件,但split并不支持这样操作。我们可以结合xargs命令来满足我们的需要,把每个生成的文件进行重命名

案例4:按1000行分割,生成的文件格式为:result_ + 3位数字 + .csv
split -l 1000 a.txt -d -a 3 result_ && ls | grep result_ | xargs -n1 -I {} mv {} {}.csv

这里我们简单介绍一下xargs命令的作用

上一篇下一篇

猜你喜欢

热点阅读