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

相关推荐
A charmer4 分钟前
【Linux】文件系统知识梳理:从磁盘硬件到文件管理
linux·运维·服务器
Cynthia的梦20 分钟前
Linux学习-Linux进程间通信(IPC)聊天程序实践指南
linux·运维·学习
卡戎-caryon26 分钟前
【Linux网络与网络编程】03.UDP Socket编程
linux·服务器·网络·笔记·单例模式·udp·网络通信
張萠飛42 分钟前
Linux的TCP连接数到达2万,其中tcp_tw、tcp_alloc、tcp_inuse都很高,可能出现什么问题
linux·网络·tcp/ip
孙同学_1 小时前
【Linux篇】自主Shell命令行解释器
android·linux
敲上瘾2 小时前
高并发内存池(二):Central Cache的实现
linux·服务器·c++·缓存·哈希算法
一只努力学习的Cat.2 小时前
Linux:环境变量
linux
安顾里2 小时前
Linux命令-tar
linux·运维·服务器
有莘不破呀2 小时前
服务器磁盘卷组缓存cache设置介绍
linux·运维·服务器
DBWYX3 小时前
gcc 链接顺序,静态库循环依赖问题
linux·运维·服务器