在Linux中查找最近被修改过的文件
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工具,如ls和grep命令的组合,来实现类似的结果。