Linux下切分文件并生成规则文件名的方法

最近接到了个需求:将生成的文件按照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_

Linux下切分文件并生成规则文件名的方法
文章图片

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

Linux下切分文件并生成规则文件名的方法
文章图片

看到这几个参数的大致区别了吧
下面说重点 切分之后的文件没有后缀的 这是我们可以用下面的命令来生成
ls|grep out_|xargs -n1 -i{} mv {} {}.txt

意思是先查找out_开头的文件,然后逐个重命名为.txt下面试效果
Linux下切分文件并生成规则文件名的方法
文章图片

这样就完美的解决了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

Linux下切分文件并生成规则文件名的方法
文章图片

【Linux下切分文件并生成规则文件名的方法】

    推荐阅读