修改bash ls命令以结束字符排序

时间:2017-02-10 03:50:42

标签: python bash sorting ls listdir

我有一个包含许多日志文件的目录,例如sample_step1[_step2[_step3]].log

检查我运行python ls_end.py的每个步骤的合并情况,即

from os import listdir
from os.path import getsize, isfile

def end_sort(s): return s[::-1]


files = [i for i in listdir('.') if isfile(i) and not i.startswith('.')]
for i in sorted(files, key=end_sort):
    print("{:10.2f}\t{}".format(getsize(i)/1024, i))

在bash中有什么替代方法可以从结尾对目录中的文件进行排序吗?

2 个答案:

答案 0 :(得分:2)

这似乎是一种非常不正统的排序方法,但是如果您安装了util-linux软件包,那么您可以在bash中轻松完成,其中包括rev实用程序:

ls | rev | sort | rev 

另一种可能性,即稍微更传统的类型,将是:

ls | sort -t_ -k4 -k3,3 -k2,2

这会按正常顺序对每个step字段进行排序,但会将缺少step2step3的文件放在不同的顺序中,这可能是也可能不是您所要求的。寻找。

答案 1 :(得分:1)

怎么样

ls | rev | sort | rev