Shell删除非今天的日志
1、环境说明,小编的环境是Centos7。如下图所示:

2、说明需要删除的文件目录,小编需要删除“/usr/local/tomcat/logs/”目录下,非今天的日志文件。使用命令“ls -l /usr/local/tomcat/logs”,查看该目录下的文件。如下图所示:

3、今天的时间为“2020-08-07”。如下图所示:

4、使用命令“cd /root”命令回到root目录下。如下图所示:

5、使用vi或vim命令,创建del.sh文件。因小编习惯使用vim命令进行创建文件,便使用命令“vim del.sh”进行创建文件,如在使用该命令提示错误时,使用命令“vi del.sh”。如下图所示:


6、在打开的文件中按下键盘上的“I”键,进入到文件编辑模式,此时文件框左下角将出现“insert或插入”字样。如下图所示:


7、声明shell脚本解释器,在脚本中输入“#!/bin/bash”。如下图所示:

8、接着在文件中声明变量“today=`date +%Y-%m-%d`或today=`date +%F`”,两条命令作用相同,都是将今天日期格式化为年月日的显示方式。如“2020-08-07”。如下图所示

9、输入命令“for i in `ls /usr/local/tomcat/logs* | grep -v $today`; do rm -f /usr/local/tomcat/logs/$i; done;”。如下图所示:

10、输入完成后,按下键盘上的“Esc”键,退出编辑状态,并同时按下键盘上“Shift + :”输入冒号“:”,接着在冒号后输入wq后,按下键盘上的“Enter”键进行保存文件。如下图所示:



11、使用命令“sh del.sh”执行脚本,执行完毕后使用命令“ll /usr/local/tomcat/logs”查看我们需要删除目录下的文件。如下图所示:

12、如想删除非今天日志外,还想保留文件“catalina.out、adam_authchat.log、test_apartmet.log”;只需在do作用域范围内使用if进行条件过滤即可。命令如下:if [[ "$i" == "catalina.out" || "$i" == "adam_authchat.log" || "$i" == "test_apartmet.log" ]]then continueelse rm -f /usr/local/tomcat/logs/$ifi

13、再次使用命令“sh del.sh”执行脚本,执行完毕后使用命令“ll/usr/local/tomcat/logs”查看我们需要删除目录下的文件。如下图所示:

14、以下是小编整个脚本的内容,如有需要或参考可复制后进行使用。命令如下:#!/bin/bashtoday=`date +%Y-%m-%d`for i in `ls /usr/local/tomcat/logs* | grep -v $today`;doif [[ "$i" == "catalina.out" || "$i" == "adam_authchat.log" || "$i" == "test_apartmet.log" ]]then continueelse rm -f /usr/local/tomcat/logs/$ifidone;

15、到此使用脚本删除非今天日志及条件删除日志就完成了,希望对你有所帮助!^V^