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

Rya*_*yan 123 linux terminal ls list limit

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

Pau*_*bel 218

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

ls -1t | head -5
Run Code Online (Sandbox Code Playgroud)

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

如果你想要最后5次尝试

ls -1t | tail -5
Run Code Online (Sandbox Code Playgroud)

  • 这忽略了顶部的总数:`ls -1t | 头-n 6 | 尾巴-n 5` (3认同)
  • 如果我没有弄错的话,shell表示多列中`ls`的输出,但是`ls`的输出通过管道连接到一个文件/ dir的后续命令 (2认同)
  • 我没有看到总数,但如果有一个肯定会奏效。 (2认同)

Ale*_*lex 12

使用tail命令:

ls -t | tail -n 5
Run Code Online (Sandbox Code Playgroud)

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

sam*_*ane 12

接受的答案仅列出文件名,但要获得前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


Hea*_*ank 10

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

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

ls -t | head -n 5
Run Code Online (Sandbox Code Playgroud)

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

ls -tr | tail -n 5
Run Code Online (Sandbox Code Playgroud)