如何在 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 命令显示前六行,包括列标题和最近修改的五个文件。

现在我们将了解如何使用“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 命令搜索目录及其子目录中所有在过去 24 小时内修改的文件,使用 -m 时间选项。然后,我们可以使用 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 命令搜索当前目录 (.) 及其子目录中的所有文件 (-type f),这些文件在过去 24 小时内 (-m time -1) 被修改,并使用空字符终止其名称 (-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 命令则提供了详细的视图。

更新于:2023年8月1日

12K+ 浏览量

开始你的 职业生涯

通过完成课程获得认证

开始
广告

© . All rights reserved.