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

Posted

技术标签:

【中文标题】如何列出(ls)目录中最后修改的 5 个文件?【英文标题】:How can I list (ls) the 5 last modified files in a directory? 【发布时间】:2013-03-19 10:52:19 【问题描述】:

我知道ls -t 会按修改时间列出所有文件。但是如何将这些结果限制为仅最后 n 个文件?

【问题讨论】:

颠倒顺序ls -lrt 可能对某人有帮助。 爱它@PJBrunet。我已经养成了总是使用tharl 的习惯,因为它往往拥有我需要的一切。 【参考方案1】:

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

对我有用的解决方案是:

find . -type f -mmin -10 -ls

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

【讨论】:

【参考方案2】:

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

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

ls -t | head -n 5

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

ls -tr | tail -n 5

【讨论】:

【参考方案3】:

接受的答案仅列出文件名,但也可以使用前 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

【讨论】:

【参考方案4】:

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

【讨论】:

您指的是哪个平台/版本?你能提供一个链接吗?查看linux man-page 的结果与您所说的相反:-t sort by modification time, newest first【参考方案5】:

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

ls -1t | head -5

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

如果你想要最后 5 个尝试

ls -1t | tail -5

【讨论】:

如果我没记错的话,shell 在多个列中表示ls 的输出,但ls 的输出一次通过管道传送到以下命令,其中包含 1 个文件/目录跨度> 忽略顶部的总计:ls -1t | head -n 6 | tail -n 5 我没有看到总数,但如果有一个肯定会起作用。【参考方案6】:

使用tail 命令:

ls -t | tail -n 5

【讨论】:

这给出了 5 个最旧的。您需要反转排序 (ls -tr) 或使用head 而不是tail,以获得最新的 5 个。

以上是关于如何列出(ls)目录中最后修改的 5 个文件?的主要内容,如果未能解决你的问题,请参考以下文章

ls useradd groupadd group命令

linux 之 ls 命令

Linux命令之 ls

在linux终端中,如何显示文件夹的最后修改日期,考虑其内容?

树莓派linux shell

如何列出linux的文件目录和所有的文件