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

前言

因为测试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/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值