首页 > 系统相关 >在Linux中如何删除指定时间之前修改的文件?

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

时间:2024-04-19 16:22:05浏览次数:31  
标签:文件 log 删除 10 -- 指定 时间 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

删除N天前的 "文件" 和 "文件夹"

假设, 执行命令的日期是,当月15日

命令解释:

find            查找命令
/root/Text        查找路径
-maxdepth 1        设置搜索目录层级,1层
-mtime            文件最后修改时间
+3                3天前(或理解成从命令执行当前日期开始,当天不算,保留3个文件)
-amin            文件最后修改时间
+10                时间超过10分钟的时间
-type            文件类型
f                指定类型。f是文件;d是目录;f普通文件;l符号连接;
                         c字符设备;b块设备;s套接字;p Fifo
-name            查询方式为查询文件名
"log.*"            查找log开头后面为任意长度字符的文件(不明白可以找“正则表达式”教程看看)
-exec            固定写法
-ok                固定写法, 和-exec一样功能,但是会提示
rm -f            符合条件的执行删除并不提示
{}                固定写法,会被替换find 找到的文件(夹). 注意左右有空格
\;                固定写法,注意左有空格

为了自动运行,可以加入系统的定时任务

编译(默认用vi)

crontab -e

加入命令, 指定每天中午12点执行,删除90天前的文件(夹)(还可以理解成,保留90天的文件(夹):

* 12 * * * find . -mtime +90 -type f -name "*" -exec \rm -rf {} \;

说明:

第一个号表示时间中的 分钟, 取值范围:0-59
第二个号表示时间中的 小时, 取值范围:0-23
第三个号表示一个月中的第几天,取值范围:1-31
第四个号表示一年中的第几个月,取值范围:1-12
第五个*号表示一个星期中的第几天,以星期天开始依次的取值为0~7,0、7都表示星期天

查看执行列表(默认用vi)

crontab -l

 

标签:文件,log,删除,10,--,指定,时间,Linux,天前
From: https://www.cnblogs.com/ubirdy/p/18146191

相关文章

  • Unity获取指定文件夹下的所有文件
    usingSystem.IO;publicvoidGetFiles(){stringpath=string.Format("{0}",Application.streamingAssetsPath);//stringpath=string.Format("{0}",@"C:\Users\USER\Desktop\JXBWG\Assets\StreamingAssets&qu......
  • linux文件被谁删除了
     如果你也有如标题所属的困扰。可以尝试一下linuxaudit功能。1 是否能用1.1这个功能需要内核启用,要编译时打开了如下图所示的选项 1.2启动内核的时候,也不能是关着的。(红框这行不能有) 1.3 服务是不是开着的(下图就是内核选项没开时候的提示)systemctlstatusaud......
  • linux运维常用命令总结
    1.tarzcf打包目录时,排除其中的一些目录或者文件tar--exclude=dir1--exclude=dir2--exclude=file1-czvfarchive.tar.gzsource_directory 2.yum只下载不安装包yum-yinstallnfs-utilsrpcbind--downloadonly--downloaddir/home/nfs 3.查看本机出网IP地址......
  • [转帖]linux命令top内存显示M兆或者G
     转载自:https://zhuanlan.zhihu.com/p/42665560===============许多Linux命令现在都有使其输出更易于理解的选项。让我们了解一些可以让我们心爱的操作系统更友好的东西。不是每个人都以二进制方式思考,他们不想在大脑中给大数字插入逗号来了解文件的大小。因此,Linux命令......
  • 196. 删除重复的电子邮箱【Problem:Every derived table must have its own alias】
    SQL-Boy上线,最近在写SQL语句遇到了这样的问题。Problem:Everyderivedtablemusthaveitsownalias错误语句如下deletefromPersonwhereidnotin(selectidfrom(selectmin(id)asidfromPersongroupbyemail)......
  • Linux 新增LVM分区及LVM分区扩容
    Linux新增LVM分区及LVM分区扩容_linuxlvm增加-CSDN博客https://blog.csdn.net/FallenLeaves_/article/details/1299722561.查看当前磁盘分区fdisk-l2.查看分区和挂载情况lsblk3.创建一个新的分区并指定位置lvm文件类型fdisk /dev/sdb4.创建PV,VG,LVpvcreate/dev/s......
  • 【小提示】指定Python版本以消除运行Ansible时显示的警告
    我正在编写Ansible手册来设置Mac。当我运行它时,我收到警告,所以我会调查它并分享我解决的问题。你好。我是AmazonWebServices团队的Sureing。最近,我的Mac键盘无法正常工作,我把它修好了。在此期间,将提供替换设备,但设置为默认设置。您可以手动更改设置,但让我们使用Ansible......
  • linux使用官方安装包安装的lazarus如需修改lazarus文件需要用root权限
    最近有网友反馈linux使用官方安装包安装的lazarus,按尝试解决linux下Lazarus2.2.0版代码编辑器和SynEdit不支持中文输入的Bug(2024.02.27解决《修正LinuxLazarusIDE代码编辑器中文输入》后用fpcupdeluxe重新编译lazarus时出错的Bug)-秋·风-博客园(cnblogs.com),修改后重构laz......
  • 在Linux中,如何在Linux中使用LXD进行容器管理?
    在Linux中使用LXD进行容器管理涉及一系列步骤,从安装LXD开始,到创建和管理容器。下面将详细解释这些步骤:一、安装LXD添加LXD仓库:对于大多数Linux发行版,如Ubuntu,首先需要将LXD仓库添加到系统中。这通常涉及到将仓库的GPG密钥添加到系统中,并添加一个新的APT源。安装LXD和相关工具......
  • 在Linux中,如何使用Docker和Kubernetes管理容器?
    在Linux中,使用Docker和Kubernetes管理容器涉及多个步骤,这些步骤涵盖了从安装到配置、部署和维护的整个过程。下面将详细解释这些步骤:一、Docker的使用安装Docker:首先,需要从Docker的官方网站或Linux发行版的软件仓库中下载并安装Docker。安装完成后,可以使用docker命令行工具进......