callMeLazy 发表于 2014-07-09 09:17

求一ksh脚本

有这样一个目录结构:
level 1-------------------root
leve 2 -------------------a       b             c            d ……
level 3-------------------x.logxx.log      y.log   z.log ……
其中2层目录中的目录名是动态变化的,现在是a、b、c、d 4个目录,下一刻可能是a、b、m、n、g 5个目录,总之一直在变。
而第3层目录下都会有一个log文件名字不固定,但以“.log"结束。

要求将安第二层目录名对第3层目录下的log文件打包命名,比如将上图的x.log打包为a.tar, 将xx.log打包为b.tar, 将y.log打包为c.tar
由于第二层目录的动态性,所以必须动态获取root/下的目录清单。


小弟ksh很菜,不知道这东东该怎么整。跪求,可参考的脚本,万分感谢!

phanx 发表于 2014-07-09 13:26

本帖最后由 phanx 于 2014-07-09 13:32 编辑

回复 1# callMeLazy /usr/bin/ls -1d /*/* | /usr/bin/grep "\.log$" | /usr/bin/cut -c 2- | /usr/bin/awk -F'/' '{ s=sprintf("cd /%s; tar -cf /%s.tar %s", $1, $1, $2); system(s)}'这个只支持目录下只有一个log文件哦,有多个的话只有最后一个.log能打包。

如果你是用于生产环境,那么请在你的脚本里面留下一行#(C)Copyright by phanx 2014:luya: :luya: :luya:
页: [1]
查看完整版本: 求一ksh脚本