如何删除Linux服务器中超过指定天数的文件?
你可能已经知道,我们在Linux系统服务器中使用rm命令来删除文件和文件夹,要删除的文件名必须作为参数传递给rm。但是,rm本身不提供其他选项,例如根据时间戳删除文件。
因此,我们在Linux中使用find命令,它是用来根据不同的参数搜索文件和文件夹的。它是一个复杂的命令,可以用文件名、大小、文件类型等参数来搜索。
在find命令中,有一个选项可以根据文件的年龄来搜索文件,今天我们将看到如何使用find和rm一起删除超过指定天数的文件。
查找大于N天的文件
我们使用find命令的参数'-atime'来查找超过N天的文件,即最后一次访问至少在N天之前。
$ find <directory_path> -atime +<N>
$ find . -atime +3
在当前有两个文件,它们最后一次被访问是在4天前。让我们使用'stat'命令来验证这一点。
$ stat tmp2 tmp3

正如你所看到的,这些文件分别是4天和5天的。请注意,程序在计算文件的历史时,会忽略时间戳的任何分数部分;因此,当文件的历史超过4天或更多时,我们指定+3。
删除超过N天的文件
最后,让我们调用参数为'-exec'的 rm 命令来删除这些文件。
$ find . -atime +3 -exec rm {} \;
于是,'tmp2'和'tmp3'这两个文件被删除了。
在本文中,我们已经看到了如何在Linux系统服务器中删除超过指定天数的文件。大家可能知道,在Linux(和Unix)文件系统中,文件的创建时间是不被维护的。一个文件所维护的三个时间戳是:它的最后一次访问时间、最后一次修改时间和最后一次状态变化时间。
这里我们考虑的是最后一次访问时间,用于搜索文件。用户也可以选择修改或状态变化时间:只需分别使用'-mtime'或'-ctime'选项,而不是'-atime',其余语法保持不变。