Localizando um arquivo com a mesma hora de modificação que outro

1

Para cada foto, minha câmera produz um arquivo IMG_NNNN.JPG e um IMG_NNNN.CR2, que têm exatamente o mesmo tempo de modificação (que, vindo de um cartão SD formatado em FAT, é sempre um número par de segundos). / p>

Eu mantenho o JPG e o CR2 separadamente, mas às vezes preciso encontrar o CR2 que corresponde a um determinado JPG. Meus scripts atuais usam algo como:

find /path/to/CR2s -name $(basename $jpgfile .JPG).CR2

Mas infelizmente, devido à substituição de numeração usando apenas o nome, não é mais suficiente. Usar o nome e a hora da modificação seria perfeito, mas algo como:

find /path/to/CR2s  -name $(basename $jpgfile .JPG).CR2 -newermt  "$(stat -c '%y' $jpgfile)" 

não funciona porque newermt parece realizar uma comparação estrita de desigualdade (mesmo com newer ). Além disso, as opções de newer... não são realmente à prova de balas, pois pesquisar o CR2 de um antigo JPG pode encontrar o CR2 de um homônimo mais recente.

Então:

  • Eu estou negligenciando uma opção em find (GNU findutils 4.7.0-git)?
  • Ou há uma maneira elegante de fazer isso (levando em conta que os arquivos com o mesmo nome normalmente estão separados por anos)?
por xenoid 19.08.2018 / 12:25

1 resposta

1

Com zsh , você pode fazer

autoload age

file=/path/to/something.JPG
ls -ld -- **/$file:t:e.CR2 (De'(age :$file :$file)')

Para encontrar os arquivos something.CR2 que têm exatamente a mesma idade que $file .

    
por 19.08.2018 / 13:06

Tags