Linux:如何删除指定时间之前修改的文件?

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

相关推荐
搞Linux的杰仔12 分钟前
Ubuntu20.04基础配置安装——系统安装(一)
linux·嵌入式开发
Kaede62 小时前
如何应对Linux云服务器磁盘空间不足的情况
linux·运维·服务器
apocelipes8 小时前
Linux c 运行时获取动态库所在路径
linux·c语言·linux编程
努力学习的小廉9 小时前
深入了解linux系统—— 进程池
linux·运维·服务器
秃头菜狗9 小时前
各个主要目录的功能 / Linux 常见指令
linux·运维·服务器
2301_793102499 小时前
Linux——MySql数据库
linux·数据库
jiunian_cn11 小时前
【Linux】centos软件安装
linux·运维·centos
程序员JerrySUN11 小时前
[特殊字符] 深入理解 Linux 内核进程管理:架构、核心函数与调度机制
java·linux·架构
孤寂大仙v11 小时前
【计算机网络】非阻塞IO——select实现多路转接
linux·计算机网络
派阿喵搞电子11 小时前
Ubuntu下有关UDP网络通信的指令
linux·服务器·网络