2014-05-01 29 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

感谢您的解释:) –