У меня есть каталог, который содержит пары файлов. К сожалению, схема именования файлов - беспорядок, поэтому очень трудно связать пары друг с другом по имени файла.

НО: каждая пара была создана почти в одно и то же время. Почти что означает менее 1 минуты. Несвязанные файлы имеют временные метки, которые отличаются как минимум на несколько часов.

Как я могу найти каждую пару файлов?

Я хочу обработать их дальше. Следовательно, предпочтительным является формат вывода, который может быть разборчиво / пригоден для использования сценарием bash.

Пример списка каталогов:

Mar 14  08:29   AAA_2018_03_20_33.xxx
Mar 14  08:30   BBB-xxx-20_4.pdf
May 3   08:32   AAA_2018_05_10_40.xxx
May 3   08:32   BBB-xxx-10_2.pdf
May 24  08:33   AAA_2018_05_30_44.xxx
May 24  08:33   BBB-xxx-30_5.pdf
Mar 23  08:44   AAA_2018_03_30_35.xxx
Mar 23  08:44   BBB-xxx-30_1.pdf
May 18  08:48   AAA_2018_05_25_43.xxx
May 18  08:48   BBB-xxx-25_7.pdf

Я отсортировал их по времени, чтобы выделить, какие файлы объединяются. Также имена файлов были немного подвергнуты цензуре.

Могут быть ошибки, с которыми необходимо разобраться: могут быть отдельные файлы (пара отсутствует) или более двух файлов в одной и той же дельте времени. В этих случаях я хочу вызвать функцию bash для решения проблемы (зарегистрировать ее, сообщить пользователю и т.д.)

1 ответ1

1

Грубый эскиз: для каждого файла AAA *:

  • получить отметку времени ( stat - ваш друг)
  • вычислить минимальную временную метку для соответствующего BBB (я думаю, такой же, как AAA) и максимальный TS для BBB (AAA+ несколько минут)
  • используйте две метки времени как условие в find: \( \! -newermt $maxts -a -newermt $mints \)
  • переименуйте найденный файл (или создайте ссылку) AAA- what-BBB-what.pdf ( AAA_2018_03_20_33-BBB-xxx-20_4.pdf), чтобы впоследствии можно было получить имя BBB из имени AAA.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .