delete file
1 删除文件
今天一同事问我,有没有一个shell命令可以删除一个目录下除一类文件以外的所有文件。于是想了半天,后来还是投机取巧想了一个不是很好的。
####利用find命令来删除,find命令的非运算是"\!"来表示的 find ./ -type f \! -name 'liwei*' -exec rm -rf {} \; ####也可以用``来完成 rm -rf `ls | grep -v 'liwei*'`
find命令博大精深,要好好学习。
2 更高效地删除
2.1 问题:
在 tmp
目录下有大量包含 select_*
的临时文件,每天晚上 2:30
对一天前的文件进行清理。
之前在 crontab 下增加如下脚本,但是发现脚本效率很低,每次执行时负载猛涨,影响到其他服务。
find /tmp -name "select_*" -mtime +1 -exec rm -f {} \;
2.2 原因:
目录下有大量文件,用 find很耗资源 。
2.3 解决:
cd /tmp time=`date -d "2 day ago” “+%b %d"` ls -l|grep "select" |grep "$time"|awk ‘{print $NF}’|xargs rm -rf #
2.4 Delete
find ./ -maxdepth 1 -type f -mmin +10 -name '*.txt' -exec rm -rf {} \;