目录

问题

解决


问题

今天遇到一个问题,具体情况如下:目录 /var/www/html/media/chunks/ 中存在很多临时文件,需要进行删除,但是手动删除的话,会非常的慢,首先,我们查看一下3天前都有哪些文件。
命令如下:

find /var/www/html/media/chunks -mtime +3 -name "*.*"

查询结果部分截图如下: 

#yyds干货盘点#批量删除过期文件的方法_当前目录

粗略算了一下,大概上千个。
手动删除的话,估计要等到天荒地老。

解决

既然需要根据时间来删除过期文件,那么我们必须要知道一些和时间相关的概念。关于文件的时间信息有三个:atime、mtime、ctime,它们的意思分别是:最近访问时间(access time)、最近更改时间(modify time)和最近状态改动时间(change time)。基于我们的诉求,很明显,我需要使用 mtime 时间。
下面通过一个例子来看一下这三个时间的具体表现形式:

#yyds干货盘点#批量删除过期文件的方法_音视频_02

好了,既然明确了需要使用 mtime 时间参数,那么就来看一下如何使用这个命令参数吧。

  1. 方式一

find . -mtime n 

其中,n 为数字,意思是在当前目录下 n 天之前的“一天之内”被更改过内容的文件。

  1. 方式二

find . -mtime +n

其中,n 为数字,意思是在当前目录下 n 天之前(不含 n 天本身)被更改过内容的文件名。

  1. 方式三

find . -mtime -n

其中,n 为数字,意思是在当前目录下 n 天之内(含 n 天本身)被更改过内容的文件名。
最后,通过一张图来更加形象的理解 n 的实际含义:

#yyds干货盘点#批量删除过期文件的方法_html_03

好了,现在可以直接上大招啦:

find /var/www/html/media/chunks -mtime +3 -name "*.*" -exec rm -Rf {} \;

上述命令的作用就是将三天前查询到的文件都删除。
我们再执行最开始的查询命令,发现文件都已经删除了,截图如下:

#yyds干货盘点#批量删除过期文件的方法_音视频_04


作者简介:😄大家好,我是 Data-Mining(liuzhen007),是一位典型的音视频技术爱好者,前后就职于传统广电巨头和音视频互联网公司,具有丰富的音视频直播和点播相关经验,对 WebRTC、FFmpeg 和 Electron 有非常深入的了解,😄公众号:玩转音视频。同时也是 CSDN 博客专家、华为云享专家(共创编辑)、InfoQ 签约作者,欢迎关注我分享更多干货!😄