Contents

在Linux中列出最后五个修改的文件

1. 概述

我们在 Linux 中使用ls 命令列出我们的文件和文件夹。我们可以添加选项来显示更多或更少的细节。它还允许我们根据上次修改时间对文件进行排序。

一个常见的用例是我们想要最后修改的五个文件。不幸的是,单独的ls不能限制它的输出。在本教程中,我们将使用 ls以及 headtail 来完成此操作。

本文中的示例都在 bash 中进行了测试,但也应该可以在其他 shell 中运行。

2. 列出最后修改的文件

假设我们有一个目录,其中包含十个名为file-1.txtfile-2.txt直到file-10.txt的文件。它们是按相同的顺序创建的。使用*ls -t,*我们可以按最后修改时间列出它们:

$ ls -t1
file-10.txt
file-9.txt
file-8.txt
file-7.txt
file-6.txt
file-5.txt
file-4.txt
file-3.txt
file-2.txt
file-1.txt

正如预期的那样,这将按照我们创建文件的相反顺序打印文件。请注意,我们还向ls添加了1作为参数,我们将每个文件放在自己的行上。

3. 使用head

现在要将结果限制为仅最后修改的五个文件,我们通过head管道输出ls

$ ls -t1 | head -5
file-10.txt
file-9.txt
file-8.txt
file-7.txt
file-6.txt

4. 使用tail

当我们想知道哪些文件最近最少被修改时,我们使用tail来获取最后五个结果:

$ ls -t1 | tail -5
file-5.txt
file-4.txt
file-3.txt
file-2.txt
file-1.txt

5. 逆序

使用尾部来获取最后五个结果可能不会给我们想要的结果。我们可能想首先列出最旧的文件。让我们将r添加到ls的参数中以应用反向排序:

$ ls -tr1 | tail -5
file-6.txt
file-7.txt
file-8.txt
file-9.txt
file-10.txt

这以创建的相反顺序打印了最后修改的文件。ls的排序是在输出通过tail管道传输之前完成的。我们必须用head替换最后一个命令才能得到我们想要的结果:

$ ls -tr1 | head -5
file-1.txt
file-2.txt
file-3.txt
file-4.txt
file-5.txt