我编写了一个 BASH 脚本,可以从 mp3(等)中删除 META 数据,然后我将它们切碎以在需要时重新采样 mp3 并重新设计数据以创建与艺术家/专辑相对应的目录...
我找到了一些歌曲标题中间有非英文字符的 mp3。我需要知道去除中间部分的最佳方法,将刺痛的两端放回歌曲的标题中。使用 exiftool 我剥离 META 数据,将输出放入 var-name 中
ARTIST1="`exiftool -Artist "$FILENAME" -p '$Artist'`"
TITLE1="`exiftool -Title "$FILENAME" -p '$Title'`"
ALBUM1="`exiftool -Album "$FILENAME" -p '$Album'`"
first strip... Artist is -> The Stranglers and Friends
first strip... Album is -> Live in
first strip... Title is -> The Raven – With Basil Gabbi
META 数据中的歌曲标题
乌鸦 ��������������������������������������������������������������������������� 与巴兹尔·加比 (Basil Gabbi) 一起
我如何去掉 META 数据歌曲名称之间的内容来得到这个?
The Raven With Basil Gabbi
语法看起来像这样
newSongName="$( what ever code goes here to strip out that non english sting part )"
这样我就可以将新字符串写回到文件中,用新字符串替换旧的 META 数据。
谢谢
答案1
这应该会让你非常接近:
newSongName=$(echo "$TITLE1" | tr -dc '[:print:]')
它告诉tr
删除不在其中的字符print
班级名称。您可以根据需要尝试其他角色类。
答案2
含有乱码的字符串 ->
$ x="The Raven ƒÆ’¢â‚¬â€œ With Basil Gabbi"
这会保留所有大写字母,小写 az 会删除其他所有内容
$ echo ${x//[^A-Za-z ]/}
像这样留下字符串
The Raven With Basil Gabbi
在脚本中看起来像这样
title=${TITLE1}
## holds on to normal chars getting rid of the rest
title=${title//[^A-Za-z ]/}