利用Linux find刪除特定时间的文件

利用Linux find刪除特定時間戳記的檔案

最近工作上有個需求,需要在 server 下系統時刪除3個月之前的 log 資料,起因是某天在下系統的時後,op同仁打電話過來表示磁碟空間已滿,因此系統出現異常。主機每天都會紀錄每隻process的一些log,但系統內也沒有寫排程去刪除,因此就空間滿了。

達成需求的功能 : 保留三個月內的log,刪除三個月前的資料

要達到上述提到的需求,流程大致上需要這麼處理

找尋檔案的指令
藉由找尋檔案的指令,看有沒有參數可以來限定每個時間範圍的檔案
找到檔案後刪除這些資料
起初我還在思考是不是要寫一隻shell 取得今天的時間然後在去爬檔案目錄什麼的blablabla……

後來強大主管提示我去 man page 看一下 find 的相關用法

讓我們來看看 find 的基本用法吧!!!

查找當前目錄和子目錄下的所有檔案

find .
當前目錄下查找所有.log的檔案(忽略大小寫 -iname)

find ./ -name “*.log”
接下來 find 也有對應時間戳記查找的參數,用來指定檔案時間範圍

-mtime/mmin n指定檔案的最後修改時間(modification time),單位為天/分鐘。

-atime/amin n指定檔案的最後存取時間(access time),單位為天/分鐘。

-ctime/cmin n指定檔案狀態相關資訊最後修改的時間(status time),單位為天/分鐘。

根據需求,我們要找的是修改時間 (-mtime),並且以天為單位的,會有以下三種情境

  • find . -mtime 10 : 找尋 剛好10天之前 被修改的檔案

  • find . -mtime -10 : 找尋 近10天內 被修改的檔案

  • find . -mtime +10 : 找尋 10天之前被修改的檔案

  • find . -mtime +10 -mtime -20 : 找尋10天以上20天以內的資料

此次的需求是要找當前之料夾下,距離今日90天以前的資料

find ./ -mtime +90
這邊我們已經成功找到當前目錄下修改時間 90 天以前的檔案了
最後一步把這些檔案刪除就可以大公告成了 😃

使用 find . -exec

find ./ -exec cmd {} ;
使用 {} 用在 -exec 结合使用把找尋到的檔案,替换成相應的文件名。

find ./ -type d -mtime +90 -prune -exec rm -rf {} ;
後來發現如果要刪除的話,其實也可以直接使用 -delete,但-exec 就是比較彈性可以做更多變化,我們這邊就偷懶使用 -delete 吧!

最終的寫法如下
find ./ -mtime +29 -delete
這次的紀錄也是寫個筆記給腦容量不大的自己,成功完成利用 find 指令搭配上時間戳記 -mtime n 在用 -delete 把時間戳記條件下的檔案找出來並刪除

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值