一、删除文件
假设有test-XXX1,test-XXX2,test-XXX3....等N个文件,要控制文件的数量为3个,而且要保留最新的那一个
#!/bin/sh if [ $(ls -l | grep "test-*" | wc -l) -gt 3 ] then echo "file > 3" rm -r $(ls -rt | head -n2) fi
ls -l:目的是按行列出文件
grep "test-*":筛选出包含test-为开头的文件
wc -l:统计行数(也就相当于统计有多少个这样的文件)
-gt:大于
ls -rt:把文件按从旧到新的顺序排列
head -n2:选取排列的头两个文件,这个数字2可以任意的改变
rm -r:移除目录
二、删除目录
需求:和上面删除文件的需求一样,/usr/local/mysql/backup 目录下的文件夹数量大于3个,就删除最旧的前2个文件夹
#!/bin/bash cd /usr/local/mysql/backup if [ $(ls -l|grep "^d"| wc -l) -gt 3 ] then echo "directory > 3" rm -r $(ls -rt | head -n2) fi
上面这段shell脚本中的代码 重点如下:
ls -l|grep "^d"| wc -l # 查看当前目录下的文件夹目录个数(不包含子目录中的目录),如果需要查看子目录的,加上R
声明:禁止任何非法用途使用,凡因违规使用而引起的任何法律纠纷,本站概不负责。
精彩评论