原来的:
2011 年 1 月 23 日 10:42 某事 2007.12.20.avi 2009 年 6 月 26 日 某事 2009.06.25.avi 2010 年 2 月 12 日 某事 2010.02.11.avi 2011 年 1 月 29 日 09:17 某事 2011.01.27.avi 2011 年 2 月 11 日 20:06 某事 2011.02.10.avi 2011 年 2 月 27 日 23:05 某事 2011.02.24.avi
输出:
2011 年 2 月 27 日 23:05 某事 2011.02.24.avi 2011 年 2 月 11 日 20:06 某事 2011.02.10.avi 2011 年 1 月 29 日 09:17 某事 2011.01.27.avi 2011 年 1 月 23 日 10:42 某事 2007.12.20.avi 2010 年 2 月 12 日 某事 2010.02.11.avi 2009 年 6 月 26 日 某事 2009.06.25.avi
我生成了上面的列表(原始):
ls -A -lR | grep "^-" | sed "s/.\{43\}/&\n/" | grep -v "^-" | while read ONELINE; do if echo $ONELINE | cut -d " " -f3 | grep -o '[0-9][0-9]:[0-9][0-9]' > /dev/null 2>&1; then echo $ONELINE | sed "s/.\{7\}/&$(date +%Y) /"; else echo $ONELINE; fi; done
Run Code Online (Sandbox Code Playgroud)
如何获得最新文件位于顶部的输出?
Gil*_*il' 20
这是您要排序的文本文件,还是要按日期查看目录列表?对于后者,使用-t
标志 tols
。对于前者,请特别参阅-M
GNU sort的标志,它按三个字母的月份名称缩写进行排序。以下命令按第 3、1、2 和 4 列排序,将第二个排序键视为月份名称。
sort -k 3 -k 1M -k2 -k4 in.txt
Run Code Online (Sandbox Code Playgroud)
请考虑始终使用日文/ISO 样式的日期,始终按照 YYYY-MM-DD-HH-MM-SS 的顺序(即最重要的在前,列宽不变)。这种按日期排序的方式与字典排序相同。
小智 6
我不确定在ls
询问原始问题时该功能是否在命令中,但现在您可以使用选项--full-time
.
例如,
ls -t --full-time
Run Code Online (Sandbox Code Playgroud)
将在底部按最旧的时间排序;或者如果您使用:
ls -tr --full-time
Run Code Online (Sandbox Code Playgroud)
然后它会颠倒顺序。