问题:例如,一个文件夹中有 16 个曲目,但我只想播放 1 - 7。如何在 MPlayer 中执行此操作?方法如下:
mplayer 1.mp3 - 7.mp3
这不是正确的方法。在 MPlayer 中不写出每个文件名是否可行?
答案1
据我所知,这在 MPlayer 内部是不可能的,但一点命令行魔法可以产生一些很好的结果。
以下内容可能有点笨拙,但按照您指定的命名约定,这里可以很好地运行:
mplayer $(find . -maxdepth 1 -name "[1-7].mp3" | ls -v)
简要说明:
find . -maxdepth 1
:在当前目录中搜索,不进行递归。-name "[1-7].mp3"
:查找文件名仅包含数字 1-7 的 mp3。本[1-7]
节演示了 Bash 范围表达式,其中匹配数字 1 和 7 以及介于 1 和 7 之间的所有数字。ls -v
:对搜索进行排序,以便按数字进行播放。
毫无疑问还有其他方法,但这种方法已经足够好了,如果你的实际文件名不同,只需改变语法中的正则表达式find
来匹配......
答案2
在这种情况下,您唯一需要的其他工具是您的 shell 命令行。
mplayer [1-7].mp3
该示例使用 shell通配符(又名路径名扩展)来选择要播放的文件。但是,例如,如果您想播放曲目 8 至 11,则应该看起来更像这样:
mplayer [89].mp3 1[01].mp3
有关详细信息,请参阅2.13. 模式匹配符号在 Posix 规范中,特别是子部分2.13.3 用于文件名扩展的模式。
另请参阅路径名扩展shell 手册页 ($ man sh
) 的部分以及其后的关于Shell 模式匹配。