Encontrar arquivos com o mesmo tempo

0

Eu tenho um diretório que contém pares de arquivos. Infelizmente, o esquema de nomeação dos arquivos é uma bagunça, portanto, é muito difícil associar os pares uns aos outros por nome de arquivo.

MAS: cada par foi criado quase ao mesmo tempo. Quase significando menos de 1 minuto. Os arquivos não relacionados têm registros de data e hora que diferem em pelo menos várias horas.

Como posso encontrar cada par de arquivos?

Eu quero processá-los ainda mais. Portanto, um formato de saída que seja nicley parsable / usable por um script bash é o preferido.

Exemplo de listagem de diretório:

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

Classifiquei-as por hora para destacar quais arquivos são compatíveis. Além disso, os nomes dos arquivos foram censurados ligeiramente.

Pode haver erros que precisam ser resolvidos: pode haver arquivos únicos (falta de par) ou mais de dois arquivos no mesmo delta de tempo. Nestes casos eu quero chamar uma função bash para lidar com o problema (logar, informar o usuário, etc.)

    
por masgo 10.06.2018 / 23:50

1 resposta

1

Esboço aproximado: para cada arquivo AAA *:

  • obtenha o carimbo de hora ( stat é seu amigo)
  • calcula o timestamp mínimo para um BBB correspondente (igual ao AAA, eu acho) e o TS máximo para BBB (AAA + alguns minutos)
  • use os dois timestamps como uma condição em find : \( \! -newermt $maxts -a -newermt $mints \)
  • renomeie o arquivo encontrado (ou crie um link) AAA-whatever-BBB-whatever.pdf ( AAA_2018_03_20_33-BBB-xxx-20_4.pdf ) para que mais tarde você possa obter o nome BBB do nome AAA.
por 11.06.2018 / 00:15