根据中间部分对文件进行排序

根据中间部分对文件进行排序

我在 unix 中有以下文件,我想根据文件名中的日期和时间对文件进行排序

ABC_XYZ。20170201223147。TXT
ABC_XYZ。20170201223146。TXT
ABC_XYZ。20170127223141。TXT
ABC_XYZ。20170125223139。TXT
ABC_XYZ。20170214223134。TXT

我期待下面的输出

ABC_XYZ。20170125223139。TXT
ABC_XYZ。20170127223141。TXT
ABC_XYZ。20170201223146。TXT
ABC_XYZ。20170201223147。TXT
ABC_XYZ。20170214223134。TXT

我尝试使用sort -ksort -n,也许我没有以正确的方式使用它们。

答案1

如果当前文件夹中的所有文件都具有与描述相同的格式,您可以使用以下命令:

ls | sort -t . -k 2 

-t开关将分隔符设置为 a。.
-k开关指示使用哪个键进行排序。

使用您提供的文件名格式,您不需要开关,-n因为每个文件名中的位数相同。如果情况并非总是如此,您-n也可以轻松添加开关:

ls | sort -n -t . -k 2 

同样,如果文件名的每个部分的数字长度不同,您可能需要指定两个键以及将它们扩展多远:

ls | sort -n -t . -k 2,2 -k 3,3

相关内容