Ho una directory con un sacco di file di registro come sample_step1[_step2[_step3]].log
per verificare la conformità di ogni passaggio che corro python ls_end.py
, che è
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))
c'è qualche alternativa in bash per ordinare i file nella directory dal finale?
risposte:
2 per risposta № 1Sembra un metodo di ordinamento molto poco ortodosso, ma potresti farlo abbastanza facilmente in bash se hai il util-linux
pacchetto installato, che include il rev
utilità:
ls | rev | sort | rev
Un'altra possibilità, che è un tipo leggermente più convenzionale, sarebbe:
ls | sort -t_ -k4 -k3,3 -k2,2
Questo ordinerà ciascuno step
campo in ordine normale, ma posizionerà i file mancanti step2
e step3
in un ordine diverso, che può o non può essere quello che stai cercando.
1 per risposta № 2
Che ne dite di
ls | rev | sort | rev
?