最近接到了个需求:将生成的文件按照1000行切分成一个文件并且重新命名为.txt文件

拿到需求后我看 这不挺简单的 split方法就ok了 但是...切割后的文件不能自动添加扩展名和按规律命名

所以一顿查找 最后算是解决掉了分割后命名无规律的问题 现在记录一下

先来个split的简单介绍

split支持自定义输出文件大小和输出文件行数两种模式,此外还可以定义每一行最大的值。

-l 按输出文件行数 : split -l 200 input_file out_file

-b 按输出文件大小 : split -b 200 input_file out_file(注意-b后边跟的数字需要换算成字节数)

-d 如果加上-d则后缀为数字,不加则默认为字母

-a 默认为2,意思是后缀的位数,这个是根据你分出来的文件个数决定的

1. split -l 20 input_file out_file_

2. split -l 20 -d -a 2 input_file out_file

看到这几个参数的大致区别了吧

下面说重点 切分之后的文件没有后缀的 这是我们可以用下面的命令来生成

ls | grep out_ | xargs -n1 -i{} mv {} {}.txt
意思是先查找out_开头的文件,然后逐个重命名为.txt 下面试效果

这样就完美的解决了split文件之后没有后缀的问题

===============后续==============

要求每生成一个txt文件 创建一个空的信号文件 也就是ok文件

arr=`ls -l ${path} | grep "out_file_" | awk '{print $9}'`
for dirName in ${arr}
do
NAMES=$(basename $dirName .txt)
touch $NAMES.ok
done

————————————————
版权声明:本文为CSDN博主「佩奇配骑」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_42652074/article/details/104658573

 

补充:

分割压缩包,如.tar.gz、.tgz 等

1. 首先验证下md5码:
$ md5sum.exe kibana-6.8.22-linux-x86_64.tar.gz
ceab366b852c2013ab5b145569bb18ee *kibana-6.8.22-linux-x86_64.tar.gz

2. 分割成45M大小的多个文件:
split.exe -b 45M kibana-6.8.22-linux-x86_64.tar.gz -d -a 2 kibana
-rw-r--r-- 1 fWX956445 1049089 45M 1月 7 17:20 kibana00
-rw-r--r-- 1 fWX956445 1049089 45M 1月 7 17:20 kibana01
-rw-r--r-- 1 fWX956445 1049089 45M 1月 7 17:20 kibana02
-rw-r--r-- 1 fWX956445 1049089 44M 1月 7 17:20 kibana03

说明:-d 表示使用数字后缀,-a 2 表示两位后缀,数字可以表达 00 - 99,共100个文件,一般情况下都够用。

3. 重新合并,合并时尽量带上后缀的首个数字或字符
cat kibana0* > kibana-6.8.22-linux-x86_64.tar.gz

4.重新验证合并后的文件的md5码
md5sum kibana-6.8.22-linux-x86_64.tar.gz
ceab366b852c2013ab5b145569bb18ee kibana-6.8.22-linux-x86_64.tar.gz

这种方式可以用于在限制单个文件大小的平台上传输大文件,不过略微繁琐。

posted on 2021-09-07 20:19  51core  阅读(649)  评论(0)    收藏  举报