164

我知道ls -t会按修改时间列出所有文件。但是我怎样才能将这些结果限制在最后n 个文件中呢?

4

6 回答 6

290

尝试使用头部或尾部。如果您想要 5 个最近修改的文件:

ls -1t | head -5

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

如果你想要最后 5 次尝试

ls -1t | tail -5
于 2013-03-28T20:19:31.693 回答
30

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

ls -lht | head -6

在哪里:

-l以列表格式输出

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

-t通过将最近修改的文件放在最前面对输出进行排序

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

我认为这是一种更优雅且可能更有用的方法。

示例输出:

total 26960312 -rw-r--r--@ 1 user staff 1.2K 11 Jan 11:22 phone2.7.py -rw-r--r--@ 1 user staff 2.7M 10 Jan 15:26 03-cookies-1.pdf -rw-r--r--@ 1 user staff 9.2M 9 Jan 16:21 Wk1_sem.pdf -rw-r--r--@ 1 user staff 502K 8 Jan 10:20 lab-01.pdf -rw-rw-rw-@ 1 user staff 2.0M 5 Jan 22:06 0410-1.wmv

于 2018-01-11T11:37:16.967 回答
13

使用tail命令:

ls -t | tail -n 5
于 2013-03-28T20:19:24.367 回答
5

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

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

ls -t | head -n 5

对于从最旧到最新排序的最新 5 个文件,使用-rswitch to reversels的排序顺序,并使用tail最后 5 行输出:

ls -tr | tail -n 5
于 2020-01-03T14:02:03.157 回答
2

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

于 2016-08-25T23:13:42.190 回答
0

没有其他答案对我有用。结果既是文件夹又是文件,这不是我所期望的。

对我有用的解决方案是:

find . -type f -mmin -10 -ls

这会在当前目录中列出最近 10 分钟内修改的所有文件。它不会列出最后 5 个文件,但我认为它可能会有所帮助

于 2021-10-28T12:04:59.513 回答