如何在Linux服务器中根据时间戳查找文件?

在Linux系统服务器中的find命令是用来根据不同的参数来搜索文件和文件夹的。这些参数可以是文件名、大小、文件类型等。
其中一个参数是文件的时间戳。在Linux(以及所有基于Unix的文件系统)中,每个文件都有3个时间戳。
最后修改时间
最后访问时间
最后状态改变时间(即当文件的元数据如权限被改变时)
让我们看看如何使用find根据这些时间戳来搜索文件。
在Linux服务器中查找文件时间戳
首先,我们可以在Linux服务器中运行'stat'命令来获取一个文件的所有这些时间戳。例如对于一个名字为'stat'的文件,运行:
$ stat tmp

根据时间戳查找文件
现在,为了根据时间戳查找文件,我们使用man页面中find的参数'-newerXY'。
man find

因此在参数'-newerXY'中,我们可以将X分别作为a、c或m,表示最后一次访问、最后一次状态变化和最后一次修改时间,将Y作为t,这样我们就可以让下一个参数是一个时间戳字符串。
注意:在基于Unix的文件系统中,文件的出生时间,即创建时间是不被维护的。
一般来说,要运行的命令是这样的。
find <directory_path> -newer<a/m/c>t ‘<timestamp>’
这里,时间戳的格式应该是:'YYYY-MM-DD HH:MM:SS'。'YYYY -MM -DD HH: MM: SS'.
让我们在一个只有几个文件的文件夹上试试这个方法,只有两个文件在指定的时间内有过访问、修改和状态改变。
find . -newerat ‘2021-02-19 06:34’
find . -newerct ‘2021-02-19 06:34’
find . -newermt ‘2021-02-19 06:34’
用'stat'来验证两个文件的时间戳是否确实大于指定的时间。
stat tmp2 tmp3

我们已经学习了如何使用'-newerXY'这个参数来搜索基于时间戳的文件。
注意,你也可以使用另一个文件作为参考时间戳,而不是明确指定时间戳,在这种情况下,参数中的't'可以被跳过。