shell_11:shell脚本分别压缩一年的文件并删除源文件

1、服务器上有一个目录/abc/123/images/,下面有按照每天日期的目录,如果day_20190109。

写一个脚本,把/abc/123/images/下面的2019年全年的目录打包压缩,如day_20190109压缩后为day_20190101.tar.gz,并删除掉day_20190109目录;

脚本内容如下:
[root@localhost_002 shell100]# cat 28.2.sh 
#!/bin/bash
cd /root/image/
for d in `ls -d day_2018*`
    do
    tar -zcf $d.tar.gz $d && rm -fr $d
done
[root@localhost_002 image]# mkdir day_20180101
[root@localhost_002 image]# mkdir day_20181212
[root@localhost_002 image]# mkdir day_20180506
[root@localhost_002 image]# mkdir day_20180304
[root@localhost_002 image]# ls
day_20180101  day_20180304  day_20180506  day_20181212
[root@localhost_002 image]# cd -
/root/shell/shell100
[root@localhost_002 shell100]# sh 28.2.sh 
[root@localhost_002 shell100]# cd -
/root/image
[root@localhost_002 image]# ls
day_20180101.tar.gz  day_20180304.tar.gz  day_20180506.tar.gz  day_20181212.tar.gz

我们假设/root/image/有很多以天来命名的目录,需要对这个目录分别压缩,并删除源文件;

注释:首先用 cd  进入到这个目录下;

然后用 for  d  in `ls -d 2018*`;do tar zcf $d.tar.gz $d && rm -r $d

注意:在使用ls  的时候需要加上 -d 选项,表示打印当前目录,下一级目录不打印了;

如果不加 -d 脚本则有文件;如下对比;

#加 -d 如下:
[root@localhost_002 shell100]# cat 28.2.sh 
#!/bin/bash
cd /root/image/
for d in `ls -d day_2018*`
    do
     echo $d
done
[root@localhost_002 shell100]# sh 28.2.sh 
day_20180101
day_20180506
#不加 -d  则如下: 
[root@localhost_002 shell100]# cat 28.2.sh 
#!/bin/bash
cd /root/image/
for d in `ls  day_2018*`
    do
     echo $d
done
[root@localhost_002 shell100]# sh 28.2.sh 
day_20180101:
123
day_20180506:
123

 

转载于:https://my.oschina.net/yuanhaohao/blog/2999459

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值