如何在 Linux 上查找最近修改的文件
在多种情况下,您可能希望搜索最近或在任何时间范围内在 Linux 系统中更改/创建的文件。例如,作为系统管理员,您在 Linux 系统上进行了一些配置,但忘记了它的保存位置。您想要验证您的 Linux 文件系统最近是否/如何被某人篡改。如果您想在 Linux 上查找最近更新的文件,您可以使用 find
命令,如下所示。
要查找最近修改的文件,请按更新时间的相反顺序排序(即,首先是最近更新的文件):
$ find /etc -type f -printf '%TY-%Tm-%Td %TT %p\n' | sort -r
2012-09-14 22:25:14.0000000000 /etc/shadow
2012-08-17 00:56:36.0000000000 /etc/resolv.conf
2012-08-16 23:22:57.0000000000 /etc/ld.so.cache
2012-08-16 23:22:29.0000000000 /etc/mtab
2012-08-16 23:22:04.0000000000 /etc/network/run/ifstate
2012-07-10 01:19:24.0000000000 /etc/papersize
...
上面的命令按照更新时间的相反顺序对 /etc
(及其所有子目录)中的文件进行排序,并打印出排序后的列表及其位置和更新时间。如果您还想检查目录,可以在命令中省略 -type f
选项。
要搜索 /target_directory
及其所有子目录中最近 60
分钟内修改过的文件:
$ find /target_directory -type f -mmin -60
要搜索 /target_directory
及其所有子目录中最近 2
天内修改过的文件:
$ find /target_directory -type f -mtime -2
要搜索 /target_directory
及其所有深度不超过 3
层的子目录中且在过去 2
天内修改过的文件:
$ find /target_directory -type f -mtime -2 -depth -3
您还可以指定更新时间范围。要搜索 /target_directory
及其所有子目录中最近 7
天内修改过的文件,但最近 3
天内未修改过的文件:
$ find /target_directory -type f -mtime -7 ! -mtime -3
到目前为止,所有这些命令仅打印出匹配的文件的位置。您还可以使用 -exec
选项获取最近修改的文件的详细文件属性,如下所示。
要搜索 /target_directory
(及其所有子目录)中最近 60
分钟内修改过的文件,并打印出其文件属性:
$ find /target_directory -type f -mmin -60 -exec ls -al {} ;
或者,您可以使用 xargs 命令来实现相同的目的:
$ find /target_directory -type f -mmin -60 | xargs ls -l
请注意,在指定时间范围内创建的文件也将被这些命令匹配。