对于每张照片,我的相机都会生成一个 IMG_NNNN.JPG 和一个 IMG_NNNN.CR2 文件,它们具有完全相同的修改时间(来自 FAT 格式的 SD 卡,始终为偶数秒)。
我单独保存 JPG 和 CR2,但有时我需要找到与给定 JPG 相对应的 CR2。我当前的脚本使用类似以下内容:
find /path/to/CR2s -name $(basename $jpgfile .JPG).CR2
但不幸的是,由于编号翻转,仅使用名称已不再足够。使用名称和修改时间将是完美的,但类似:
find /path/to/CR2s -name $(basename $jpgfile .JPG).CR2 -newermt "$(stat -c '%y' $jpgfile)"
不起作用,因为newermt
似乎执行严格的不平等比较(与 相同newer
)。此外,newer...
选项并不是真正防弹的,因为搜索旧 JPG 的 CR2 可以找到较新同音词的 CR2。
所以:
- 我是否忽略了
find
(GNU findutils 4.7.0-git)中的一个选项? - 或者是否有一种优雅的方法来做到这一点(考虑到具有相同名称的文件通常相隔数年)?
答案1
有了zsh
,你可以做
autoload age
file=/path/to/something.JPG
ls -ld -- **/$file:t:e.CR2 (De'(age :$file :$file)')
查找something.CR2
与$file
.