Linux中按时间批量删除N天前文件
根据时间删除这个目录下的文件,/tmp,清理掉30天之前的无效数据。
可以使用下面一条命令去完成:
find /tmp -mtime +30 -name "*.*" -exec rm -Rf {} \;
这个是根据时间删除。
下面简要解释一下,这句shell命令:
- /tmp :准备要进行清理的任意目录;
- -mtime:标准语句写法;
- +10:查找10天前的文件,这里用数字代表天数,+30表示查找30天前的文件;
- “.”:希望查找的数据类型,".jpg"表示查找扩展名为jpg的所有文件,""表示查找所有文件;
- -exec:固定写法;
- rm -Rf:强制删除文件,包括目录;
- {} \ ; :固定写法,一对大括号+空格++;
注意:删除文件的过程中可能会遇到问题如下所示:find: missing argument to ‘-exec’;
解决方法:在{}和\之间必须要有空格,否则会报这个的错。
此外贴上find 参数说明,方便大家理解。
-amin -n # 最后一次访问发生在 n分钟 之内
-amin n # 最后一次访问发生在距离当前时间 n分钟 至 (n+1)分钟
-amin +n # 最后一次访问发生在 (n+1)分钟 之外
-atime -n # 最后一次访问发生在 n天 之内
-atime n # 最后一次访问发生在 n天 至(n+1)天
-atime +n # 最后一次访问发生在 (n+1)天 之外
-cmin -n # 最后一次文件状态修改发生在 n分钟 之内
-cmin n # 最后一次文件状态修改发生在 n分钟 至 (n+1)分钟
-cmin +n # 最后一次文件状态修改发生在 (n+1)分钟 之外
-ctime -n # 最后一次文件状态修改发生在 n天 之内
-ctime n # 最后一次文件状态修改发生在 n天 至 (n+1) 天
-ctime +n # 最后一次文件状态修改发生在 (n+1)天 之外
-mmin -n # 最后一次文件内容修改发生在 n分钟 之内
-mmin n # 最后一次文件内容修改发生在 n分钟 至 (n+1)分钟
-mmin +n # 最后一次文件内容修改发生在 (n+1)分钟 之外
-mtime -n # 最后一次文件内容修改发生在 n天 之内
-mtime n # 最后一次文件内容修改发生在 n天 至 (n+1)天
-mtime +n # 最后一次文件内容修改发生在 (n+1)天 之外
例如:查找文件内容修改发生在2天之内的文件
find /var/log/hive/-name "*" -mtime -2