嵌入式参数替换
Embedded parameter substitution
这是一个个参数替换(将图片文件名转换为日期):
var=“2020-12-30 11-30-55CX.mov”
p1=${var:0:11}
pt=${var:11:8}
p2=${pt//-/:}
dt=“${p1} ${p2}”
我想一次完成这个,这样 exiftool 就可以了:
dt=“${var:0:11} ${${var:11:8}//-/:}”
你不能像那样嵌套扩展运算符。但是您可以只使用较小的子字符串来获得您想要的结果。
dt="${var:0:11} ${var:11:2}:${var:14:2}:${17:2}"
感谢 Barmar 的回答。
最后我只想澄清一下,因为我需要将日期时间用于 ExifTool,所以我不需要做任何事先的 Linux 变量替换,因为 ExifTool 有办法使用 -d 选项指定文件名中使用的任何日期时间格式以提取它。所以这就是我最终要做的。请注意,我什至不必删除 ExifTool 的结尾 CX.mov 字符来获得正确的日期时间:
exiftool -d '%Y-%m-%d $H-%M-%S' \
'-DateTimeOriginal<${FileName}' \
'-CreateDate<${FileName}' \
'-MediaCreateDate<${FileName}' "${file}"
这是一个个参数替换(将图片文件名转换为日期):
var=“2020-12-30 11-30-55CX.mov”
p1=${var:0:11}
pt=${var:11:8}
p2=${pt//-/:}
dt=“${p1} ${p2}”
我想一次完成这个,这样 exiftool 就可以了:
dt=“${var:0:11} ${${var:11:8}//-/:}”
你不能像那样嵌套扩展运算符。但是您可以只使用较小的子字符串来获得您想要的结果。
dt="${var:0:11} ${var:11:2}:${var:14:2}:${17:2}"
感谢 Barmar 的回答。
最后我只想澄清一下,因为我需要将日期时间用于 ExifTool,所以我不需要做任何事先的 Linux 变量替换,因为 ExifTool 有办法使用 -d 选项指定文件名中使用的任何日期时间格式以提取它。所以这就是我最终要做的。请注意,我什至不必删除 ExifTool 的结尾 CX.mov 字符来获得正确的日期时间:
exiftool -d '%Y-%m-%d $H-%M-%S' \
'-DateTimeOriginal<${FileName}' \
'-CreateDate<${FileName}' \
'-MediaCreateDate<${FileName}' "${file}"