Linux find命令删除N天或N小时前的文件或目录

前言全局说明

Linux find命令删除N天或N小时前的文件或目录


一、模拟创建N天前的文件(夹)

1.1 生成不带0开头的文件名
for i in {1..15}; do t=$i; touch -d "2024-01-0$i 00:00:00" $i.txt; done

image

1.2 生成0开头的文件名
for i in {01..15}; do t=$i; touch -d "2024-01-0$i 00:00:00" $i.txt; done

image

1.3 生成00开头的文件名
for i in {01..15}; do t=$i; touch -d "2024-01-0$i 00:00:00" $i.txt; done

image

细心的人可能发现:
2024-01-0$i 的 $i 前多了个0 ,经过测试,这个不影响修改时间,正常用不到就要去掉。
这里为了演示就加上了

1.4 生成00开头的文件加
for i in {001..15}; do t=$i; mkdir $i; touch -d "2024-01-0$i 00:00:00" $i; done

image


二、删除N天前的 "文件"

假设, 执行命令的日期是,当月15日

2.1 删除10天前的文件(不算执行命令的这天)
find . -mtime +10 -type f -name "*" -exec \rm -f {} \;

image


2.2 删除1天前的文件(不算执行命令的这天)
find . -mtime +1 -type f -name "*" -exec \rm -f {} \;

image


三、删除N天前的 "文件夹"

find . -maxdepth 1 -mtime +10 -type d -name "*" -exec \rm -rf {} \;

image


四、删除N天前的 "文件" 和 "文件夹"

假设, 执行命令的日期是,当月15日

find . -maxdepth 1 -mtime +3 -name "*" -exec \rm -rf {} \;

如果要删文件,又删出文件夹,那么就不用-type 参数

image


五、命令解释:

find 查找命令
/root/Text 查找路径
-maxdepth 1 设置搜索目录层级,1层
-mtime 文件最后修改时间
+3 3天前(或理解成从命令执行当前日期开始,当天不算,保留3个文件)
-amin 文件最后修改时间
+10 时间超过10分钟的时间
-type 文件类型
f 指定类型。f是文件;d是目录;f普通文件;l符号连接;
c字符设备;b块设备;s套接字;p Fifo
-name 查询方式为查询文件名
"log.*" 查找log开头后面为任意长度字符的文件(不明白可以找“正则表达式”教程看看)
-exec 固定写法
-ok 固定写法, 和-exec一样功能,但是会提示
rm -f 符合条件的执行删除并不提示
{} 固定写法,会被替换find 找到的文件(夹). 注意左右有空格
\; 固定写法,注意左有空格

六、为了自动运行,可以加入系统的定时任务

6.1 编译(默认用vi)

crontab -e

加入命令, 指定每天中午12点执行,删除90天前的文件(夹)(还可以理解成,保留90天的文件(夹):
* 12 * * * find . -mtime +90 -type f -name "*" -exec \rm -rf {} \;

说明:

第一个号表示时间中的 分钟, 取值范围:0-59
第二个号表示时间中的 小时, 取值范围:0-23
第三个号表示一个月中的第几天,取值范围:1-31
第四个号表示一年中的第几个月,取值范围:1-12
第五个*号表示一个星期中的第几天,以星期天开始依次的取值为0~7,0、7都表示星期天

6.2 查看执行列表(默认用vi)

crontab -l


免责声明:本号所涉及内容仅供安全研究与教学使用,如出现其他风险,后果自负。




参考、来源:
https://blog.51cto.com/wutou/1932446
Linux命令大全搜索工具 v1.8.0.pdf
https://www.jianshu.com/p/b7ae88d0a01e



posted @   悟透  阅读(6546)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· NetPad:一个.NET开源、跨平台的C#编辑器
历史上的今天:
2021-01-15 yum您可以尝试添加 --skip-broken 选项来解决该问题 您可以尝试执行:rpm -Va --nofiles --nodigest 解决方案
2021-01-15 [转]百度云同步盘自动误删文件的恢复方法
2021-01-15 rpm依赖自动解决,yum批量安装,本地源
2021-01-15 git clone别人项目查看显示无权限Permission denied (publickey)
点击右上角即可分享
微信分享提示