如何从终端生成M3U播放列表?

我想从终端为我的服务器上包含mp3文件的目录生成一个M3U播放列表。 由于我想确保每个播放器都能够传输这些文件,我希望在每个文件条目前面加上该目录的绝对URL,如下所示:

 

 
 ...

所以不幸的是,仅仅做ls -1 *.mp3 > play.m3u是不够的。 实现这一目标是否有单线程?

我认为以下单行应该有效:

for f in *.mp3; do echo "http://..../$f" >> play.m3u; done

这是@chronitis的答案,有一些改进:

  • 将文件名存储在变量$ playlist中供以后使用
  • 如果以前存在,将删除该文件
  • 在播放列表中写入文件的完整路径

命令

 playlist='play.m3u' ; if [ -f $playlist ]; then rm $playlist ; fi ; for f in *.mp3; do echo "$(pwd)/$f" >> "$playlist"; done 

也可以在命令行上使用mplayer

 mplayer -playlist play.m3u 

您最初要求将每个条目创建为Web URL格式的行。 除了用http:// …替换本地路径之外,您还需要用’%20’替换空格。 所以,排长队,但在这里你去:

 find /path/to/mp3s/ -name "*.mp3" | sed 's/ /%20/g' | sed 's|/path/to/mp3s/|http://www.server.com/serverpath/|g' > playlist.m3u