如何列出目录中最后修改的5个文件?

我知道 ls -t会按修改时间列出所有文件。但是如何将这些结果限制在最后的 N文件中呢?

335114 次浏览

使用 tail命令:

ls -t | tail -n 5

尝试使用 head 或 tail。如果你想要最近修改的5个文件:

ls -1t | head -5

-1(即1)表示每行一个文件,头表示取前5个条目。

如果你想最后5次尝试

ls -1t | tail -5

按创建时间不上次修改时间列出 ls -t文件。如果要按上次修改的时间从上次到第一次(从上到下)列出文件,请使用 ls -ltc。因此要列出最后一个 n: ls -ltc | head ${n}

接受的答案只列出了文件名,但获得前5名的文件也可以使用:

ls -lht | head -6

地点:

-l以列表格式输出

-h使输出可读(即文件大小显示为 kb、 mb 等)

-t通过将最近修改的文件放在第一位来对输出进行排序

head -6将显示5个文件,因为 ls在输出的第一行打印块大小。

我认为这是一种稍微优雅一点的方法,可能也更有用。

输出示例:

总计26960312 - rw-r —— r ——@1 user staff 1.2 K 11 Jan 11.22 phone2.7.py - rw-r —— r ——@1 user staff 2.7 M 10 Jan 15:2603-cookies-1. pdf - rw-r —— r ——@1 user staff 9.2 M 9 Jan 16:21 Wk1 _ sem. pdf - rw-r —— r ——@1用户 staff 502K 8 Jan 10:20 lab-01. pdf - rw-rw -@1 user staff 2.0 M 5 Jan 22.060410-1.wmv

默认情况下,ls -t将输出从最新到最旧进行排序,因此要使用的命令组合取决于您希望将输出排序的方向。

对于从最新到最旧排序的最新5个文件,使用 head获取输出的前5行:

ls -t | head -n 5

对于从最旧到最新排序的最新5个文件,使用 -r开关逆转 ls的排序顺序,并使用 tail获取最后5行输出:

ls -tr | tail -n 5

其他的答案对我都不管用。结果是文件夹和文件,这不是我所期望的。

对我有效的解决办法是:

find . -type f -mmin -10 -ls

这个工作目录列出了在过去10分钟内修改过的所有文件。它不会列出最后5个文件,但我认为它可能会有所帮助

如果你想看到它处理最后5个修改过的文件,并在2秒内刷新,显示顶部的文件总数,请使用:

watch 'ls -Art | wc -l ; ls -ltr | tail -n 5'