我有一个使用变量的脚本,已将文件重命名为以下格式:
(track#) - (title) - (artist) - (date).mp3
#! /bin/zsh -
set -o extendedglob
pattern='(#b)*_ \((<0-999>)\)(* )—( * )(<1-12>)_(<1-31>)_(<1900-2100>)(.mp3)'
ret=0
for file {
if [[ $file = $~pattern ]] {
argv=( "$match[@]" )
mv -i -- $file "${(l[3][0])1} -$2-$3- $6-${(l[2][0])5}-${(l[2][0])4}-0900$7" || ret=$?
}
}
exit $ret
使用此脚本,此文件:
Public Talks_ (9) Walking With God Brings Blessings Now and Forever — Chris Ruscher 10_28_2023.mp3
更名为:
009 - Walking With God Brings Blessings Now and Forever - Chris Ruscher - 2023-28-10-0900.mp3
格式为:曲目# - 标题 - 艺术家 - 日期.mp3,显示变量:$1 - $2 - $3 - $6-$5-$4-0900$7
。
以上所有操作都完美无缺。我现在想添加到该脚本中。
然后我想将这些值插入到下面显示的元数据中。
- 轨道,举行于
$1
>>kMDItemAudioTrackNumber
- 标题,保存在
$2
>>kMDItemTitle
- 艺术家,举办于
$3
>>kMDItemAuthors
- 时间戳,它是这些的串联:
$6${(l[2][0])5}${(l[2][0])4}0900
>>kMDItemContentCreationDate
该脚本还将文件创建日期修改为kMDItemContentCreationDate
。我尝试将touch -t
命令添加到上面最后一步(4)的循环中,但它不起作用。
#! /bin/zsh -
set -o extendedglob
pattern='(#b)*_ \((<0-999>)\)(* )—( * )(<1-12>)_(<1-31>)_(<1900-2100>)(.mp3)'
ret=0
for file {
if [[ $file = $~pattern ]] {
argv=( "$match[@]" )
> fecha=( "$6${(l[2][0])5}${(l[2][0])4}0900$7" )
> touch -t $(date -j -f "%Y%m%d%H%M" $fecha +%Y%m%d%H%M) $file
mv -i -- $file "${(l[3][0])1} -$2-$3- $6-${(l[2][0])5}-${(l[2][0])4}-0900$7" || ret=$?
}
}
exit $ret
请注意,这是针对终端中使用 zsh 的 macOS。
对于这两个问题有什么想法:编辑元数据然后调整创建日期吗?我是脚本编写新手,所以我拼凑了我在论坛上找到的内容。非常感谢您的见解。