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


138

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


10
颠倒顺序ls -lrt可能会帮助某人。
PJ Brunet 2015年

喜欢它@PJBrunet。我养成了始终与之共处的习惯,tharl因为它往往会满足我的所有需求。
亚当·格兰特

Answers:


246

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

ls -1t | head -5

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

如果您想要最后5次尝试

ls -1t | tail -5

2
如果我没记错的话,shell代表ls多列的输出,但是的输出通过ls管道传输到以下命令,一次具有1个文件/目录
Alex

事实确实如此。很好的简化。
Paul Rubel

3
这忽略了顶部的总计:ls -1t | head -n 6 | tail -n 5
瑞安

1
我看不到总数,但是如果有的话肯定会起作用。
Paul Rubel 2013年

18

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


12

使用tail命令:

ls -t | tail -n 5

这给出了5个最古老的。您需要反转sort(ls -tr)或使用head而不是tail来获取最新的5个。
总行

2

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

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

ls -t | head -n 5

对于按从最早到最新的顺序排列的最新5个文件,请使用-rswitch反转其ls排序顺序,并使用tail输出的最后5行:

ls -tr | tail -n 5

1

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


1
您指的是哪个平台/版本?你能提供一个链接吗?查看linux手册页会得到与您所说的相反的结果: -t sort by modification time, newest first
Joma
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.