bash - 在 bash 中拆分一个变量

标签 bash ffmpeg mp3

我下载了一堆歌曲,我正在尝试将它们转换为 .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/

相关文章:

java - 如何判断重定向到什么 file.txt stdout?

regex - 在 SED 中用正则表达式匹配和替换 ![foo](/bar/)

bash - 我如何获取 STDIN 并在 bash shell 上使用它来设置环境变量?

python - 空闲python Mac上的ffmpeg

python - pydub-内存错误

linux - 在一个目录中查找不在另一个目录中的文件

java - 用Java和ffmpeg查找视频的长度

flash - Adobe 连接视频 : FLV to MP4 (export, 转换)

python - Mutagen for Python 在 Windows 7 上不起作用

java - 通过小程序压缩 MP3 文件