求助 shell中split命令如何实现文件分割 并统计分割文件个数。分割完之后,命名方式从 文件名.001 开始

d604060189 2011-09-18 11:28:57
求助 shell中split命令对文件分割 并统计分割文件个数。分割完之后,命名方式从 文件名.001 开始。
需求是这样的。 要给其他部门下发文件, 下发文件采用gzip方式,文件大于20m 分包,分包后的文件文件
命名的方式 为 00x00x。前面3位表示 是分了多少个包,后面的三位表示 是第几个包 。

请问 我应该 如何 实现。
初学 shell 。 大家 多多指教 !

我现在 能把 文件 分割 ,但是 后缀 是从 000 开始的,不是001.而且 我也不知道 如何统计 分包的个数。
 split -b 20m -a 3 -d test test.    
...全文
831 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
d604060189 2011-09-19
  • 打赏
  • 举报
回复
是我没叙述清楚吗? 哪里不清楚 请给我说一下。 我重新 描述一下 。 忘高手 多多指点
d604060189 2011-09-19
  • 打赏
  • 举报
回复
mv 那行 改成 ${i}
d604060189 2011-09-19
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 coolkisses 的回复:]
将以上描述汇整,不外乎几个问题

1) 分割文件名,从 01 开始
遗憾,split 默认就是从 00 开始,所以必须另想办法

2) 分割文件名,要显示 分割后的 文件总数,如,XX
同样遗憾,无法通过 split 一条语句解决

能想到的解决办法

1) 分割 -> 统计 -> 重命名文件,一步一步实现。
这样的话,就需要通过脚本实现。 难点在……
[/Quote]
你回答的是正确的。 我解决了,思路很清晰
贴出我的代码
 #第一步压缩文件
gzip testname
#第二部文件分包
mkdir /bonc/dw/dhy/temp
cd /bonc/dw/dhy/temp
split -b 20m -a 3 -d testname testname.
#第三步统计分包文件的个数
filenum=`ls -l|grep '^-'|wc -l`
#第四步重命名分包文件
i=1
for j in `ls testname.*`
do
mv $j seq -f "CDBBIDWAL02001A${DATE_ID}1`seq -f %03g filenum filenum`%03g" i i
let i=i+1
done
coolkisses 2011-09-19
  • 打赏
  • 举报
回复
将以上描述汇整,不外乎几个问题

1) 分割文件名,从 01 开始
遗憾,split 默认就是从 00 开始,所以必须另想办法

2) 分割文件名,要显示 分割后的 文件总数,如,XX
同样遗憾,无法通过 split 一条语句解决

能想到的解决办法

1) 分割 -> 统计 -> 重命名文件,一步一步实现。
这样的话,就需要通过脚本实现。 难点在于,文件名 顺序 + 1 (如,00 -> 01)
2) 调整业务
如,文件名不变(就从 00 开始),最终生成一个文件(文件总数.txt 如,22.txt)

23,125

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧