【问题标题】:Exiftool - modify metadata formatExiftool - 修改元数据格式
【发布时间】:2018-06-01 02:03:56
【问题描述】:

假设我在 LABEL 字段中有 5000 张带有以下元数据的图像。

0001 ELEPHANT
0002 ELEPHANT
0003 ELEPHANT
...
4999 ELEPHANT
5000 ELEPHANT

我希望将格式更改为:

ELEPHANT-0001
ELEPHANT-0002
ELEPHANT-0003
…
ELEPHANT-4999
ELEPHANT-5000

换句话说,我想对多个图像的元数据字段执行以下操作:

#### 名称 —> 名称-####

据我所知,有两种方法可以做到这一点

  1. 忽略图像中的当前元数据,并引用我单独准备的(纯文本?csv?)文件;或
  2. 以字符串形式读取文件的元数据,识别空格和空格前面的数字,保存该数字,最后通过连接数字和空格并在其间添加连字符来创建一个新字符串!

有什么建议吗?

【问题讨论】:

    标签: exiftool


    【解决方案1】:

    扩展我在exiftool forums 中给出的答案。

    基本命令是
    exiftool "-LABEL<${LABEL;s/(\d{4}) (.*)/$2-$1/}" <FileOrDir>

    您基本上想将标签复制到同一个标签中,并进行一些修改。复制标签的选项是小于(或大于)符号<>。一个常见的错误是使用等号=,它用于为标签分配静态值。

    要对标签进行修改,它需要高级格式选项,这实际上是一些内嵌的 perl 代码。在此示例中,标记被视为 perl 字符串并使用正则表达式替换。它匹配并捕获前四位数字(\d{4}),匹配空格(但不捕获它),然后匹配并捕获标签(.*) 的其余部分。这两个捕获分别分配给变量$1$2。在替换的替换部分$2-$1 中,两个捕获被颠倒,它们之间的连字符。

    要充分利用高级格式化,一些基本的 perl 和 regex 知识会很有帮助。

    确定该命令后,可以添加-overwrite_original 来禁止生成备份文件,并添加-r 以递归到子目录。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-02-23
      • 1970-01-01
      • 2015-03-07
      • 2020-11-12
      • 1970-01-01
      • 1970-01-01
      • 2021-01-06
      相关资源
      最近更新 更多