我下载了一堆歌曲,我正在尝试将它们转换为 .mp3 并重命名。 .m4a文件用ffmpeg
转成mp3后,都是Artist Name - Song Name.mp3格式。我希望能够将歌曲名称和艺术家名称分离到它们自己的变量中,这样我就可以重命名文件并用歌曲名称和艺术家名称标记歌曲。
那么,如何将一个变量分成两个变量,每个变量分别包含艺术家姓名和歌曲名称,这两个信息在 bash 中用“-”分隔?
最佳答案
可以用纯 bash 来完成:
#!/bin/bash
name="Artist Name - Song Name.mp3"
songname="${name#*- }"
songnamewithoutextentions="${songname%.*}"
artistname="${name% -*}"
printf "%s\n%s\n%s\n" "$artistname" "$songname" "$songnamewithoutextentions"
输出:
Artist: Artist Name
Song: Song Name.mp3
Song name without extention: Song Name
解释:
"${name#*- }"
是$name
中-
第一次匹配后的字符串
"${name% -*}"
是$name
中-
的最后一个匹配(右起第一个匹配)之前的字符串>
您可以从 manual 了解更多关于 Bash 参数扩展的信息.
关于bash - 在 bash 中拆分一个变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30814499/