shell删除前一天的目录并保留月末那天的目录

简介:

[root@linux26 test]# ls
2010-11-30  2010-12-01  2010-12-18  2010-12-20  2010-12-24  2010-12-31  44.sh  5.sh
2010-11-31  2010-12-17  2010-12-19  2010-12-23  2010-12-25  3.sh        4.sh   rm.sh
[root@linux26 test]# mkdir 2010-12-22
[root@linux26 test]# ls
2010-11-30  2010-12-01  2010-12-18  2010-12-20  2010-12-23  2010-12-25  3.sh   4.sh  rm.sh
2010-11-31  2010-12-17  2010-12-19  2010-12-22  2010-12-24  2010-12-31  44.sh  5.sh
[root@linux26 test]# date
Sat Jan  1 00:20:03 EST 2011
[root@linux26 test]# cat 44.sh 
#!/bin/bash
month_last_day=`date -d '-1 month' +%Y-%m`"-"`cal|xargs echo|awk '{print $NF}'`
last_day=`date -d '-10 day' +%Y-%m-%d`
if [ "$last_day" != "$month_last_day" ];then
    rm -rf $last_day
fi
[root@linux26 test]# sh -x 44.sh 
++ date -d '-1 month' +%Y-%m
++ cal
++ xargs echo
++ awk '{print $NF}'
+ month_last_day=2010-12-31
++ date -d '-10 day' +%Y-%m-%d
+ last_day=2010-12-22
+ '[' 2010-12-22 '!=' 2010-12-31 ']'
+ rm -rf 2010-12-22
[root@linux26 test]# ls
2010-11-30  2010-12-01  2010-12-18  2010-12-20  2010-12-24  2010-12-31  44.sh  5.sh
2010-11-31  2010-12-17  2010-12-19  2010-12-23  2010-12-25  3.sh        4.sh   rm.sh

 

[root@linux26 test]# date -s 2011/01/10
Mon Jan 10 00:00:00 EST 2011
[root@linux26 test]# ls
2010-11-30  2010-12-01  2010-12-18  2010-12-20  2010-12-24  2010-12-31  44.sh  5.sh
2010-11-31  2010-12-17  2010-12-19  2010-12-23  2010-12-25  3.sh        4.sh   rm.sh
[root@linux26 test]# sh -x 44.sh 
++ date -d '-1 month' +%Y-%m
++ cal
++ xargs echo
++ awk '{print $NF}'
+ month_last_day=2010-12-31
++ date -d '-10 day' +%Y-%m-%d
+ last_day=2010-12-31
+ '[' 2010-12-31 '!=' 2010-12-31 ']'
[root@linux26 test]# ls
2010-11-30  2010-12-01  2010-12-18  2010-12-20  2010-12-24  2010-12-31  44.sh  5.sh
2010-11-31  2010-12-17  2010-12-19  2010-12-23  2010-12-25  3.sh        4.sh   rm.sh

 

vi /etc/crontab

00 07 * * * root /root/clean.sh

service crond restart

即可。

说明:

目录下每天都会安装系统时间命名的目录备份文件,要求保留月末的那天的文件目录,删除文件原则是保留10天的目录。以防万一的时候可以用备份文件来恢复。所以保留10天,根据时间来。

 

 本文转自 liang3391 51CTO博客,原文链接:http://blog.51cto.com/liang3391/462942


相关文章
|
8月前
|
Shell Linux C语言
【Shell 命令集合 磁盘管理 】Linux 只删除空目录 mrd命令使用教程
【Shell 命令集合 磁盘管理 】Linux 只删除空目录 mrd命令使用教程
76 0
|
8月前
|
Shell Linux API
【Shell 命令集合 磁盘维护 】Linux 查找指定目录下的所有符号链接文件 symlinks 命令使用教程
【Shell 命令集合 磁盘维护 】Linux 查找指定目录下的所有符号链接文件 symlinks 命令使用教程
107 1
|
8月前
|
存储 Shell Linux
【Shell 命令集合 磁盘管理 】⭐⭐ Linux 显示当前shell会话中的目录栈 dirs命令使用教程
【Shell 命令集合 磁盘管理 】⭐⭐ Linux 显示当前shell会话中的目录栈 dirs命令使用教程
65 0
|
8月前
|
存储 Shell Linux
【Shell 命令集合 磁盘管理 】Linux 从远程磁带设备中删除文件或目录rmt命令使用教程
【Shell 命令集合 磁盘管理 】Linux 从远程磁带设备中删除文件或目录rmt命令使用教程
88 0
|
8月前
|
存储 安全 Shell
⭐⭐⭐【Shell 命令集合 磁盘管理 】Linux 显示当前工作目录的路径 pwd命令使用教程
⭐⭐⭐【Shell 命令集合 磁盘管理 】Linux 显示当前工作目录的路径 pwd命令使用教程
239 0
|
8月前
|
Shell Linux C语言
【Shell 命令集合 磁盘管理 】Linux 删除指定目录下的文件和子目录 mmd命令使用指南
【Shell 命令集合 磁盘管理 】Linux 删除指定目录下的文件和子目录 mmd命令使用指南
105 0
|
8月前
|
Shell Linux Serverless
【Shell 命令集合 磁盘管理 】Linux 显示目录中每个子目录的磁盘使用情况 mdu命令使用教程
【Shell 命令集合 磁盘管理 】Linux 显示目录中每个子目录的磁盘使用情况 mdu命令使用教程
61 0
|
8月前
|
Shell Linux C语言
【Shell 命令集合 磁盘管理 】Linux 创建一个新的目录并将其设为当前工作目录 mcd命令使用教程
【Shell 命令集合 磁盘管理 】Linux 创建一个新的目录并将其设为当前工作目录 mcd命令使用教程
99 0
|
8月前
|
Shell Linux C语言
【Shell 命令集合 磁盘管理 】Linux 显示当前shell会话中的目录栈 dirs命令使用教程
【Shell 命令集合 磁盘管理 】Linux 显示当前shell会话中的目录栈 dirs命令使用教程
83 1
|
8月前
|
存储 Linux Shell
【Shell 命令集合 磁盘管理 】Linux 建一个目录的镜像副本 lndir命令使用教程
【Shell 命令集合 磁盘管理 】Linux 建一个目录的镜像副本 lndir命令使用教程
81 0