нужно для каждого имени сделать некое соответствие числом, которое в нем заложено.
Создать список этих соответствий и упорядочить по числу.
Если быстро накидать, то что-то вроде этого выйдет:
names = ['file1.txt',
'file100.txt',
'file2.txt']
new_list = []
for name in names:
number = int(name.replace('file', '').replace('.txt', ''))
new_list.append((name, number))
sorted_files = [element[0] for element in sorted(new_list, key=lambda x: x[1])]
print(sorted_files) # ['file1.txt', 'file2.txt', 'file100.txt']
Если нужны будут пояснения к коду - пишите