2013-03-28 51 views
81

我知道ls -t将按修改时间列出所有文件。但是,我怎样才能将这些结果仅限于最后的文件?如何列出(ls)目录中的最后5个修改文件?

+5

顺序颠倒'LS -lrt'可能帮助别人。 –

+0

爱@PJBrunet。我已经习惯了用tharl总是用ls'ing,因为它倾向于拥有我需要的一切。 –

回答

149

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

ls -1t | head -5 

-1(这是一个)说,每行一个文件和头说,采取的第一个5项。

如果你想在过去的5试图通过创建时间

ls -1t | tail -5 
+2

如果我没有弄错,shell代表'ls'在多列中的输出,但是'ls'的输出是通过一个文件/目录在时间 – Alex

+0

处传递给下面的命令,看起来确实如此。很好的简化。 –

+3

这会忽略顶部的Total:'ls-1t |头-n 6 | tail -n 5' – Ryan

11

使用tail命令:

ls -t | tail -n 5 
2

ls -t列表文件没有最后修改时间。如果要按上次修改时间从上次到第一次(从上到下)列出文件,请使用ls -ltc。因此,要列出最近N:只ls -ltc | head ${n}

+1

你指的是哪个平台/版本?你能提供一个链接吗? 查看[linux man-page](http://man7.org/linux/man-pages/man1/ls.1.html)得出的结果与您声明的相反: '-t按修改时间排序,最新的第一' – Joma

0

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

ls -lht | head -6

其中:

-l输出在列表格式

-h使输出成为人类可读的(即文件大小以kb,mb等出现)

输出0

-t各种通过将最近修改文件第一

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

我认为这是一个稍微优雅,可能更有用的方法。

输出示例:

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

相关问题