在Linux中查找最近被修改过的文件

评论 0 浏览 0 2019-08-07

1.绪论

有很多场合,我们想搜索最近被修改过的文件。

例如,作为一个系统管理员,我们负责维护和配置计算机系统。有时,因为我们要处理大量的配置文件,我们可能想知道最近修改的文件是什么。

在本教程中,我们将使用 bash 命令在 Linux 中查找最近更改过的文件。

2.2、find命令

首先,我们将探讨find实用程序,这是最常见的实现预期目的的方法。这个命令用来查找文件和目录,并对它们执行进一步的操作。

2.1.-mtime-mmin

-mtime很方便,例如,如果我们想从当前目录中找到在过去24小时内发生变化的所有文件,就可以使用它。

find . -mtime -1

注意,.是用来指代当前目录的。-mtime n是一个表达式,它可以找到恰好在n天前被修改的文件和目录。

此外,该表达式还可以用在另外两种方式上。

  • -mtime +n = 找到修改时间超过n天的文件和目录。
  • -mtime -n = 找到修改时间小于n天的文件和目录。

同样,我们可以使用-mmin n表达式来依靠分钟而不是天数

find /home/sports -mmin +120

因此,这个命令递归地找到/home/sports目录中至少在120分钟前修改过的所有文件和目录。

接下来,如果我们想把搜索限制在文件上,而不包括目录,我们需要添加-type f表达式。

find /home/sports -type f -mmin +120

此外,我们甚至可以编排表达式。因此,让我们找到小于120分钟以内和大于60分钟前被改变的文件。

find . -type f -mmin -120 -mmin +60

2.2. -newermt

有些时候,我们想找到基于特定日期修改过的文件。为了满足这一要求,我们必须探索另一个参数,其语法如下。

-newermt 'yyyy-mm-dd'

通过使用这个表达式,我们可以得到比指定日期更早被修改的文件。

因此,让我们建立一个命令,以更好地理解新的参数。

find . -type f -newermt 2019-07-24

此外,我们可以使用组合表达式获取在特定日期修改的文件。

所以,我们’要在‘2019-07-24’获得修改过的文件。

find . -type f -newermt 2019-07-24 ! -newermt 2019-07-25

最后,还有另一个版本的-newermt参数,与-mmin-mtime相类似。

第一条命令找到了过去24小时内修改的文件。其余的也类似。

find . -type f -newermt "-24 hours" 
find . -type f -newermt "-10 minutes" 
find . -type f -newermt "1 day ago" 
find . -type f -newermt "yesterday"

3. ls 命令

我们知道,ls命令列出了一个特定目录中的文件信息。它的用途之一是显示文件的长格式,并按修改时间对输出进行排序。

ls -lt

这将输出像这样的结果。

-rw-r--r-- 1 root root 4233 Jul 27 18:44 b.txt 
-rw-rw-r-- 1 root root 2946 Jul 27 18:12 linux-commands.txt 
-rw-r--r-- 1 root root 5233 Jul 20 17:02 a.txt

我们可能无法像find命令那样准确列出最近修改的文件。但是,我们可以通过对ls命令的结果应用grep命令,根据特定的日期或时间过滤上述输出。

ls -lt | grep 'Jul 27'
-rw-r--r-- 1 root root 4233 Jul 27 18:44 b.txt 
-rw-rw-r-- 1 root root 2946 Jul 27 18:12 linux-commands.txt
ls -lt | grep '17:'
-rw-r--r-- 1 root root 5233 Jul 20 17:02 a.txt

注意,find 命令默认是递归的。为了启用ls命令的递归功能,我们还需要添加R(大写)参数。

ls -ltR

4.总结

在这个快速教程中,我们描述了一些帮助我们在Linux操作系统中找到最近被修改的文件的方法。

首先,我们探索了find命令,并创建了几个具有不同参数的例子,如-mtime-mmin-newermt

然后,我们展示了如何使用两个更知名的Linux工具,如lsgrep命令的组合,来实现类似的结果。

最后更新2022-11-17
0 个评论
标签