修改 bash ls 命令以按结束字符排序
modify bash ls command to sort by ending characters
我有一个包含很多日志文件的目录,例如 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 中是否有其他方法可以从结尾对目录中的文件进行排序?
怎么样
ls | rev | sort | rev
?
这似乎是一种非常不正统的排序方法,但如果您安装了 util-linux
软件包,您可以在 bash 中轻松完成此操作,其中包括 rev
实用程序:
ls | rev | sort | rev
另一种可能性,这是一种稍微更传统的排序,是:
ls | sort -t_ -k4 -k3,3 -k2,2
这将按正常顺序对每个 step
字段进行排序,但会以不同的顺序放置缺少 step2
和 step3
的文件,这可能与您的顺序不同正在寻找。
我有一个包含很多日志文件的目录,例如 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 中是否有其他方法可以从结尾对目录中的文件进行排序?
怎么样
ls | rev | sort | rev
?
这似乎是一种非常不正统的排序方法,但如果您安装了 util-linux
软件包,您可以在 bash 中轻松完成此操作,其中包括 rev
实用程序:
ls | rev | sort | rev
另一种可能性,这是一种稍微更传统的排序,是:
ls | sort -t_ -k4 -k3,3 -k2,2
这将按正常顺序对每个 step
字段进行排序,但会以不同的顺序放置缺少 step2
和 step3
的文件,这可能与您的顺序不同正在寻找。