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