2017-01-05 93 views
0

可以說我在aws s3桶上有以下目錄名稱。這種輸出aws s3 ls返回:Shell:如何迭代目錄名並獲取兩個最新的?

PRE 20161205_1248/ 
PRE 20161207_1613/ 
PRE 20161211_1732/ 
PRE 20161213_1806/ 
PRE 20161216_0603/ 
PRE 20161219_0255/ 
PRE 20161224_1350/ 
PRE 20161226_1915/ 
PRE 20161229_0154/ 
PRE 20161231_1139/ 

凡目錄名時間戳和最新的是:

20161205_1248 

我如何可以遍歷目錄名之前得到一個最新的?我真的新shell腳本所以會很感激的任何幫助

+1

「20161205_1248」不是最老的,「20161231_1139」是最新的嗎?你的實際產出是多少? – Inian

回答

0
  1. 列表與LS目錄中的所有文件
  2. 排序它們遞歸地排序
  3. 獲得最後2行與尾
  4. 得到這個分數的第一行頭

    ls | sort -r | tail -2 | head -1 
    

如果與去年最新的困惑,然後讓-r選項遠離排序。

+1

或者,使用'sed'打印特定的行,la'ls | sort -r | sed -n'2 {p; q}'' – twalberg

+0

是的,你的命令更短。但是在q命令後面留下分號給我一個錯誤消息(在mac上)。你需要q還是會'sed -n'2p''呢? –

+0

我想嚴格來說,'q'不是必須的 - 它只是提前退出並避免讀取文件/輸入的其餘部分。在這種情況下,由於輸入非常小,因此可能無關緊要,但是如果您從30億甚至更多的某個特定行中獲取特定行,則可能會產生顯着差異。 – twalberg

相關問題