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 @ 2024-01-15 17:26  悟透  阅读(8005)  评论(0)    收藏  举报