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命令则提供了详细的视图。