Итак, у меня есть файлы (167k), и теперь они находятся в правильном порядке, благодаря сценарию Сержа здесь - https://askubuntu.com/a/686829/462277.
И теперь мне нужно найти промежутки между именами файлов, разница должна быть 15 и более
Aaaa.bb - 000002 tag tag_tag 9tag
Aaaa.bb - 000125 tag tag_tag 9tag
Aaaa.bb - 000130 tag tag_tag 9tag
. Все они начинаются одинаково и имеют разные окончания. Все на внешнем жестком диске.
версия в python (python3, если быть точным).
сохраните программу ниже под именем diff_filename.py (сделайте ее exectuable) и используйте ее следующим образом:
$ ./diff_filename.py the/directory/containing/the/files
программа предполагает, что числа, которые вы хотите сравнить, всегда находятся в одной и той же позиции имени файла (индексы 10:16).
, поскольку теперь он довольно подробный и выводит правильные имена файлов, включая разница. как только он набирает имя файла, которое не соблюдает минимальную разницу, оно печатает это и останавливается.
вот исходный код:
#!/usr/bin/python3
# -*- coding: utf-8 -*-
'''
usage: ./diff_filename.py the/directory/containing/the/files
'''
import os
import sys
MIN_DIFF = 15
the_dir = sys.argv[1]
sorted_files = sorted(os.listdir(the_dir))
last_number = None
last_file = None
for current_file in sorted_files:
current_number = int(current_file[10:16])
if last_number is None:
last_number = current_number
last_file = current_file
continue
diff = current_number - last_number
if diff < MIN_DIFF:
print('fail! "{}" and "{}" do not respect MIN_DIFF={}'.format(
last_file, current_file, MIN_DIFF))
break
else:
print('ok! "{}" and "{}" diff={}'.format(last_file, current_file, diff))
last_number = current_number
last_file = current_file