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

1、与文件有关的时间

在说明如何删除符合这种要求的文件之前,先来看看与文件有关的有哪些时间

简名全名中文名含义
atimeaccess time访问时间文件中的数据最后被访问的时间
mtimemodify time修改时间文件中的数据最后被修改的时间
ctime change time变化时间文件的元数据后发生变化的时间。比如权限,所有者等
crtimebirth 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值