2013-03-28 77 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

相關問題