bash - 使用 exiftool 进行反向匹配
问题描述
我正在根据subject
伪标签中的内容对图片进行排序exiftool
,通常看起来像这样:
15: D101-5-12 1: Elephas maximus 16: Bob
通常我根据第二行中的物种名称对图像进行排序,但是,对于某些图像,第二行丢失了,我想过滤掉这些图像。
图片之间的第一行和第三行差异很大,所以我无法使用这些。相反,我一直在尝试围绕该主题的其他问题提出的各种“反向匹配”方法,但没有成功。例如,以下内容不起作用:
exiftool -r -if '\$subject=~/^((?!1:\s).)*$/i' \
'-Filename=./image_sorted/%f%+c%E' image_directory
关于如何做到这一点的任何想法exiftool
?
解决方案
现在我意识到您所有的物种关键字都以 开头1:
,我想我可以为您制作一个更好的多合一命令。
exiftool -r '-Filename=./image_sorted/%f%+c%E' '-Filename<./${Subject;$_=undef if not s/.*(?:^|, )1: (.*?)(,|$).*/$1/}/%f%+c%E' ./image_directory/
此命令会将没有以 开头的关键字的任何文件移动1:
到image_sorted
目录中。如果它确实有一个以 开头的关键字,1:
它将根据物种名称将其移动到目录中,这将覆盖先前的选项以将其移动到image_sorted
目录中。
此命令将为任何没有设置关键字的文件抛出一个Warning: [minor] Tag 'Subject' not defined
和一个警告。这些可以安全地忽略,您可以通过添加选项完全避免它们。Warning: No writable tags set
1: Species Name
-m
推荐阅读
- typescript - 带有打字稿的可选链接
- loops - SAS通过特定列循环
- java - Spring Boot 在运行时连接到任何远程 MySQL 数据库
- c++ - 如何获得小于 INT_MIN 的值?
- python - 有没有一种简单的方法可以像在 MATLAB 中那样将矩阵和标量相乘?
- python - Anaconda 在新环境中预安装了 pip 包
- c++ - 线程中使用的 CComQIPtr 引用计数问题
- android - 如何使用 realmResults 对象
- node.js - 为什么我的 cookie 中的数据返回未定义?
- python - 如何在 PyQt5 中解决这个问题?