2014-05-01 70 views
0

我想根據日期對「ls -al」命令的輸出進行排序。我可以很容易地做到這一點與命令一列:Linux按日期排序「ls -al」

$ ls -al | sort -k6 -M -r 

但如何做到這一點,同時爲兩個列6和7?命令:

$ ls -al | sort -k6 -M -r | sort -k7 -r 

打印出結果我不明白。

最終目標是查看最近修改過的所有文件(或v.v.)。

下面是附接例如用於對數據進行排序,並使用該命令: enter image description here

+8

你不能只用'ls -lat'嗎? – arco444

+1

請參閱http://mywiki.wooledge.org/ParsingLs - 簡而言之,'ls'不是用於程序化消費,不能從腳本中可靠地使用(特別是在嘗試支持多種平臺,實現和區域設置時) ,否則不應該(ab)以這種方式使用。 –

+0

@ arco444 - 謝謝,不知道「t」的標誌。但是,排序命令的知識在更一般的上下文中是有用的,所以這個問題仍然是有價值的。 CharlesDuffy - 注意,謝謝:) –

回答

8

隨着排序,如果在字段6指定-k6,關鍵開始並且延伸到行的結尾。要截斷它並僅使用字段6,應指定-k6,6。要對多個鍵進行排序,請多次指定-k。此外,您只需將M修飾符應用於月份,並將n修飾符應用於當天。所以:

ls -al | sort -k 6,6M -k 7,7n -r 

請注意查爾斯關於濫用ls的評論。它的輸出不能被可靠地解析。

+0

感謝您的解釋:) –