我的目录中包含.mp3文件,文件名中包含youtube链接。
所有youtube观看网址部分特别以 - 开头 - 并以.mp3结尾。
然而,有一个问题。
有些youtube链接包含在其中,而且其中一些标题也包含在其中。
我只需要从标题中提取视频的这一部分:
https://www.youtube.com/watch?v=(dQw4w9WgXcQ)
使用youtube-dl下载的视频标题为:
Rick Astley - 永远不会给你起来-dQw4w9WgXcQ.mp3
视频标题为:
Rick Astley - 永远不会放弃你
我想要完成的是获取我已经下载的所有链接并将其放在一个文本文件中,告诉youtube-dl不要重新下载它们(下载存档)
我该怎么做呢? (最好使用bash sed命令,但此时我愿意尝试任何操作。)
答案 0 :(得分:1)
比你想象的容易:贪婪的.*
后跟-
会吃掉所有-
直到最后一个:
# first get the titles an ids into a tab-separated multiline string
both=`find * -name "*.mp3" | sed 's/\(.*\)-\(.*\)\.mp3/\1\t\2/'`
# then cut it into two multiline strings
titles=`echo "$both" | cut -f1`
ids=`echo "$both" | cut -f2`
# or process each title-id pair one-by-one
echo "$both" | while IFS=$'\t' read title id; do
echo "$title"
echo "$id"
done