1、与文件有关的时间
在说明如何删除符合这种要求的文件之前,先来看看与文件有关的有哪些时间
简名 全名 中文名 含义
atime access time 访问时间 文件中的数据最后被访问的时间
mtime modify time 修改时间 文件中的数据最后被修改的时间
ctime change time 变化时间 文件的元数据后发生变化的时间。比如权限,所有者等
crtime birth time 创建时间 文件创建时间
2、查看时间的方法
通常使用ls只能看到修改时间,比如:
$ ls -l
total 92
-rw-r--r-- 1 admin 197121 91234 4月 16 10:12 access.log
如果想以格式化的形式显示时间,可以使用--time-style,比如:
$ ls -l --time-style=long-iso total 92 -rw-r--r-- 1 admin 197121 91234 2024-04-16 10:01 access.log
$ ls -l --time-style=full-iso total 92 -rw-r--r-- 1 admin 197121 91234 2024-04-16 10:01:37.078490500 +0800 access.log
有没有什么方法将上述4个时间都显示,有的,可以使用stat
$ stat access.log File: access.log Size: 91234 Blocks: 92 IO Block: 65536 regular file Device: 88ca30ch/143434508d Inode: 281474976892461 Links: 1 Access: (0644/-rw-r--r--) Uid: (197108/Administrator) Gid: (197121/ UNKNOWN) Access: 2024-04-16 10:12:44.423859000 +0800 Modify: 2024-04-16 10:12:42.045405200 +0800 Change: 2024-04-16 10:12:42.044460300 +0800 Birth: -
据查Birth属性linux已废弃,目前状态显示结果均为-
虽然使用stat查不到创建时间,但一般也够用了。如果一定想知道创建时间,可以使用debugfs命令。
这个命令一般需要使用root用户才能执行,它是直接从文件的inode上获取这个时间的
3、针对时间的操作
现在看一下根据时间如何查找文件。可以使用find命令,它提供了一些参数:
-amin n n分钟前访问过的 -atime n n天前访问过的 -cmin n n分钟前变化过的 -ctime n n天前变化过的 -mmin n n分钟前修改过的 -mtime n n天前修改过的
比如查找30天前修改过的文件
find ./ -type f -mtime +30
如果想将这些文件删除,可以直接加上-delete
find ./ -type f -mtime +30 -delete
如果想执行其它命令,可以直接加上-exec
删除N天前的 "文件" 和 "文件夹"
假设, 执行命令的日期是,当月15日
命令解释:
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 找到的文件(夹). 注意左右有空格 \; 固定写法,注意左有空格
为了自动运行,可以加入系统的定时任务
编译(默认用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都表示星期天
查看执行列表(默认用vi)
crontab -l
标签:文件,log,删除,10,--,指定,时间,Linux,天前 From: https://www.cnblogs.com/ubirdy/p/18146191