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

相关推荐
浅时光_c4 小时前
3 shell脚本编程
linux·开发语言·bash
Lucis__5 小时前
一文读懂TCP通信机制:基于相关API构建可靠性连接
linux·网络·tcp/ip
_深海凉_5 小时前
LeetCode热题100-有效的括号
linux·算法·leetcode
零号全栈寒江独钓7 小时前
基于c/c++实现linux/windows跨平台获取ntp网络时间戳
linux·c语言·c++·windows
左手厨刀右手茼蒿7 小时前
Linux 内核中的进程管理:从创建到终止
linux·嵌入式·系统内核
geinvse_seg7 小时前
中小团队如何低成本搭建项目管理系统?基于 Ubuntu 的 Dootask 私有化部署实战
linux·运维·ubuntu
CSCN新手听安7 小时前
【linux】高级IO,以ET模式运行的epoll版本的TCP服务器实现reactor反应堆
linux·运维·服务器·c++·高级io·epoll·reactor反应堆
丶伯爵式7 小时前
Ubuntu 24.04 更换国内软件源指南 | 2026年3月26日
linux·运维·ubuntu·国内源·升级
左手厨刀右手茼蒿7 小时前
Linux 内核中的 DMA 管理:从缓冲区到传输
linux·嵌入式·系统内核
Java后端的Ai之路7 小时前
Linux端口进程查找与终止教程
linux·运维·服务器