shell脚本 文件数或目录数大于3 删除最旧的文件数或目录数

一、删除文件

假设有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




声明:禁止任何非法用途使用,凡因违规使用而引起的任何法律纠纷,本站概不负责。

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

精彩评论

全部回复12人评论7,777人参与
  1. 1楼
    便捷摄影工作室

    好牛,已测试

    2016-02-28 12:04:01 回复
  2. 2楼
    naive

    浏览器换了无数个都看不到密码

    2017-02-23 04:06:13 回复
    • King 作者

      @naive 现在已被屏蔽。我再放上去,我的网站就被屏蔽咯

      2017-02-24 01:46:37 回复

电子邮件地址不会被公开。 必填项已用 *标注

loading