您的位置:首页 > 运维架构 > Linux

Linux 反向删除文件(排除特定文件)

2015-10-20 10:05 351 查看

前言

因为测试web工程的时候,改改配置什么的,需要重启应用。

强迫症的我,每次重启都要清空下日志什么的。想写个shell脚本,依次达到如下效果:

1. 停止tomcat 服务;

2. 清空logs文件夹下的日志;

3. 清空webapps文件夹下自动解压的文件,但偶尔不想删除war包;

4. 重新启动tomcat服务;

5. 屏显下catalina.out里面日志;

第3点里面就有个反向删除的需求。

“反向删除”初探

常用的删除命令是rm,但这货不能自己搞定“反向删除”这事。

基本思路:先让grep反向查找,然后删除查找出来的文件&文件夹。

按照这个想法,基本可以用find和ls + grep搞定:

命令组合具体命令行
rm + ls + greprm -rf `ls ./webapps/ | grep **.war`
rm + find + greprm -rf `find ./webapps/ -maxdepth 1 -mindepth 1 | grep -vE *.war`
说明:“`”这个符号,是标准键盘上“1”的左边那个键,成对出现,前后各一。

比较

注:只针对这个该应用场景:

lsfind
在非当前目录(webapps/)执行,达不到删除效果要注意过滤掉目标目录(webapps/)

最终脚本

#!/bin/sh

set -x

./bin/catalina.sh stop
rm -rf ./logs/*
rm -rf `find ./webapps/ -maxdepth 1 -mindepth 1 | grep -vE *.war`
./bin/catalina.sh start
tail -f 5 ./logs/catalina.out


参考

《在 Unix 系统上查找数据的最佳工具和技巧》

http://blog.jobbole.com/92811/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: