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
.
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:
find
(GNU findutils 4.7.0-git)? 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
.