Linux 如何列出最近修改的五个文件

Linux 如何列出最近修改的五个文件

在Linux中,通常需要找出最近修改的文件,以便进行故障排除或审计等各种目的。使用各种Linux命令可以实现列出最近修改的五个文件的常见需求。在本文中,我们将探讨一些在Linux中列出最近修改的五个文件的方法。

注意 – Linux命令区分大小写。

使用ls命令

ls命令是Linux中最常用的用于列出文件和目录的命令之一。我们可以使用ls命令使用-t选项按修改时间对目录中的文件进行排序。然后我们可以使用“head”命令从列表中显示前五个文件。以下命令列出当前目录中最近修改的五个文件 –

$ ls -lt | head -n 6

输出

total 31654651
-drwx-r--r--    7 user  root   1.2K   11 Dec   11:22 linuxfile.py
-rw-r--r--      5 user  root   2.7M   10 Dec   15:26 script-linux.pdf
-rw-r--r--      1 user  root   9.2M   9 Dec    16:21 win_scp.pdf
-rw-r--r--      4 user  root   502K   8 Dec    10:20 class1.pdf
-rw-rw-rw-      1 user  root   2.0M   5 Dec    22:06 script23.jpg

-l选项以长列表格式显示文件,包括文件权限,所有权,大小和修改时间。 -t选项按修改时间降序排列文件,最近修改的文件位于顶部。head命令显示前6行,包括列标题和最后5个修改的文件。

现在我们将看到如何使用“sort”命令列出最近修改的文件的最后五个。如下所示,我们需要提供目录的路径,并使用sort关键字与tail一起获取最后五个修改的文件,

$ find /home/cg/root/ -type f -printf '%T@\t%p  
' | sort -n | tail -5

输出

1684171184.3445822090   /home/cg/root/6462638544588/main.py
1684171184.7965797450   /home/cg/root/6462695907cd6/main.py
1684171186.4405707830   /home/cg/root/646264dd4a983/main.lua
1684171186.9005682750   /home/cg/root/64625da89eee4/main.lua
1684171188.9325571980   /home/cg/root/6462694c393df/main.pl

使用find命令

find命令是Linux中另一个有用的命令,用于根据不同的条件(如名称、大小和修改时间)搜索文件和目录。我们可以使用find命令使用-m time选项在一个目录及其子目录中搜索在过去24小时内已修改的所有文件。然后,我们可以使用head命令显示列表中的前五个文件。以下命令列出了当前目录及其子目录中最后五个修改的文件:

$ find . -type f -mtime -1 -print0 | xargs -0 ls -lt | head -n 6

输出

2494345    4  drwxr-xr-x   3  root  root     496  Dec 20 12:55 /root/home/shell.py
2490782    4  -rw-r--r--       1  root  root     418  Dec  8  03:54 /root/home/sh/remote.sh
2435566    4  drwxr-xr-x   3  root  root    4096 Dec 20 12:54 /root/home/shell3.sh
2494508    4  -rw-r--r--       1  root  root      436 Dec 20 12:54 /root/home/script/test3/sh
2344324    4  drwxr-xr-x   6  root  root    4096 Dec 20 12:53 /root/home/test.py

find 命令搜索当前目录(.)及其子目录中在过去24小时内修改过的所有文件(-type f),并以空字符终止的形式打印它们的名称(-print 0)。x args 命令从 find 中读取以空字符终止的文件名列表,并将它们作为参数传递给 ls 命令,该命令按修改时间对文件进行排序,并以长列表格式(-lt)显示它们。head 命令显示前六行,其中包括列标题和最后五个修改过的文件。

现在我们将看到如何使用“stat”命令列出最后五个修改过的文件。如下所示,我们需要给出目录的路径,并使用 sort 关键字和 head 来获取最后五个修改过的文件。

$ find /home/cg/root -type f -exec stat --format '%Y %n' {} + | sort -nr | head -5

输出

1684172257 /home/cg/root/646267076a666/demo.m
1684172255 /home/cg/root/64626d0533a41/testing.txt
1684172255 /home/cg/root/646267bba8bdf/main.pl
1684172254 /home/cg/root/646267eb29beb/demo.m
1684172250 /home/cg/root/64626d8526584/main.lua

结论

在本文中,我们探讨了在Linux中列出最后五个修改过的文件的两种方法。ls命令是一个简单高效的方式来列出目录中最近修改过的文件。find命令是一个更强大灵活的方式,可以根据不同的条件,包括修改时间来搜索文件,而stat命令则提供了详细的视图。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程