我在 unix 中有以下文件,我想根据文件名中的日期和时间对文件进行排序
ABC_XYZ。20170201。223147。TXT ABC_XYZ。20170201。223146。TXT ABC_XYZ。20170127。223141。TXT ABC_XYZ。20170125。223139。TXT ABC_XYZ。20170214。223134。TXT
我期待下面的输出
ABC_XYZ。20170125。223139。TXT ABC_XYZ。20170127。223141。TXT ABC_XYZ。20170201。223146。TXT ABC_XYZ。20170201。223147。TXT ABC_XYZ。20170214。223134。TXT
我尝试使用sort -k
和sort -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