前言全局说明
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
1.2 生成0开头的文件名
for i in {01..15}; do t=$i; touch -d "2024-01-0$i 00:00:00" $i.txt; done
1.3 生成00开头的文件名
for i in {01..15}; do t=$i; touch -d "2024-01-0$i 00:00:00" $i.txt; done
细心的人可能发现:
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
二、删除N天前的 "文件"
假设, 执行命令的日期是,当月15日
2.1 删除10天前的文件(不算执行命令的这天)
find . -mtime +10 -type f -name "*" -exec \rm -f {} \;
2.2 删除1天前的文件(不算执行命令的这天)
find . -mtime +1 -type f -name "*" -exec \rm -f {} \;
三、删除N天前的 "文件夹"
find . -maxdepth 1 -mtime +10 -type d -name "*" -exec \rm -rf {} \;
四、删除N天前的 "文件" 和 "文件夹"
假设, 执行命令的日期是,当月15日
find . -maxdepth 1 -mtime +3 -name "*" -exec \rm -rf {} \;
如果要删文件,又删出文件夹,那么就不用-type 参数
五、命令解释:
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 找到的文件(夹). 注意左右有空格
\; 固定写法,注意左有空格
免责声明:本号所涉及内容仅供安全研究与教学使用,如出现其他风险,后果自负。
参考、来源:
https://blog.51cto.com/wutou/1932446
Linux命令大全搜索工具 v1.8.0.pdf