У меня есть огромный список видеофайлов с веб-камеры, которые выглядят так:
video_123
video_456
video_789
...
Где каждое число (123, 456 и 789) представляет время начала файла в секундах.с эпохи.Файлы создаются на основе размера файла и не всегда имеют одинаковую продолжительность.В файлах также могут быть пробелы (например, камера выключается на час).Это пользовательский формат файла, который я не могу изменить.
У меня есть инструмент, который может извлекать части видео с заданным диапазоном времени и набором файлов.Тем не менее, он будет работать НАМНОГО быстрее, если я дам инструменту только файлы с кадрами в заданном диапазоне.Это очень дорого, чтобы определить продолжительность каждого файла.Вместо этого я хотел бы использовать начальную временную метку, чтобы исключить большинство файлов.Например, если я хотел видео для 500-600, я знаю, что video_123
не понадобится, потому что video_456
больше.Кроме того, video_789
больше 600, поэтому в этом также не будет необходимости.
Я мог бы сделать ls
и перебрать каждый файл, преобразовав временную метку в int и сравнивая, пока мы не достигнем файла большечем желаемый диапазон.У меня много файлов, и это медленно.Есть ли более быстрый метод?Я думал о том, чтобы иметь какое-то двоичное дерево, которое могло бы получить время поиска в log2n и уже разобрало временные метки.Я делаю большую часть этой работы в bash и предпочел бы использовать простые, распространенные инструменты, такие как grep, awk и т. Д. Однако я буду рассматривать Perl или какой-либо другой большой язык сценариев, если есть веская причина.