如何按自然时间顺序列出名为 XXXmmyy.dat 的文件?

如何按自然时间顺序列出名为 XXXmmyy.dat 的文件?

我使用 Mac OS X (V10.9.5) 并在 X11 窗口中工作,我经常需要处理数千个名为 的文件XXXmmyy.dat,其中XXX是地点的 3 个字母的缩写,mm是 2 位数的月份,并且是yy2 位数的年份。

这种格式是上世纪遗留下来的,在本例中继续使用。我无法重命名这些文件。

任何人都可以设计一个ls(用于列出的 UNIX 命令)命令,以自然时间顺序列出上述文件(就好像这些文件的命名方式XXXyyyymm.datyyyy4 位数的年份,mm2 位数的月份)?

答案1

按时间顺序排序:

ls *.dat | sort -k 1.6,1.7 -k 1.4,1.5

按位置排序,然后按时间顺序排序:

ls *.dat | sort -k 1.1,1.3 -k 1.6,1.7 -k 1.4,1.5

sort手册页解释如何-k POS1,POS2工作:

-k, --key=POS1[ ,POS2] 开始一个键POS1,结束于POS2(原点 1)

POSF[.C][OPTS],其中F是字段编号和C字段中的字符位置。 OPTS是一个或多个单字母排序选项,它会覆盖该键的全局排序选项。如果未给出键,则使用整行作为键。

相关内容