最近接到了个需求:将生成的文件按照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
这种方式可以用于在限制单个文件大小的平台上传输大文件,不过略微繁琐。
浙公网安备 33010602011771号