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

linuxoperating systemopen source

在 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 命令,通过 `-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` 命令。`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` 命令则提供了更详细的信息。


相关文章


有用资源