Linux Mint下如何修改Shell脚本生成含OGG与MP3的M3U播放列表
问题:如何让Shell脚本同时生成MP3和OGG文件的M3U播放列表?
在Linux Mint系统中,我用以下代码可以生成指定文件夹内所有音乐的M3U播放列表:当文件夹全是OGG文件时可用,全是MP3文件时就把扩展名改成mp3:
playlist='play.m3u' ; if [ -f $playlist ]; then rm $playlist ; fi ; for f in *.ogg; do echo "$f" >> "$playlist"; done
我想修改代码,让它能同时把MP3和OGG文件都加入同一个播放列表,但试了几种写法都无效:
for f in *.ogg AND '.mp3';for f in *.ogg & '.mp3';for f in *.ogg && '.mp3';
请问该怎么实现?
解决方案
在Shell中,要匹配多个不同后缀的文件,直接在for循环的通配符列表里用空格分隔多个模式即可,不需要用AND、&这类错误语法。
修改后的完整代码如下:
playlist='play.m3u' ; if [ -f "$playlist" ]; then rm "$playlist" ; fi ; for f in *.ogg *.mp3; do echo "$f" >> "$playlist"; done
额外说明
- 之前的错误写法混淆了Shell语法:
AND不是Shell关键字,&是后台执行符号,&&是逻辑与,都不能用来分隔通配符模式。 - 建议给变量
$playlist加上双引号,避免文件名包含空格等特殊字符时出现异常(修正版已经补上了这部分)。
内容的提问来源于stack exchange,提问作者Jon
相关产品推荐
相关产品推荐

