我有一个包含许多日志文件的目录,例如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中有什么替代方法可以从结尾对目录中的文件进行排序吗?
答案 0 :(得分:2)
这似乎是一种非常不正统的排序方法,但是如果您安装了util-linux
软件包,那么您可以在bash中轻松完成,其中包括rev
实用程序:
ls | rev | sort | rev
另一种可能性,即稍微更传统的类型,将是:
ls | sort -t_ -k4 -k3,3 -k2,2
这会按正常顺序对每个step
字段进行排序,但会将缺少step2
和step3
的文件放在不同的顺序中,这可能是也可能不是您所要求的。寻找。
答案 1 :(得分:1)
怎么样
ls | rev | sort | rev