0

我正在尝试为 mplayer 编写一个命令,该命令将按顺序播放目录中的所有音乐文件。

alias mplay='mplayer -playlist <(find "$PWD" -type f|sort -n)'

如果我已经在播放音乐的目录中,这可以正常工作。事实上,即使我在一个目录中并输入“mplay MusicFileDirectory”,它也可以工作。

但是,当我不在我播放的目录中并且文件编号为 1、2、3 ... 10、11 等(而不是 01、02 ... 11)时,命令会中断 - 10、11 个文件现在在第二个文件之前播放。

这是因为排序被应用于扩展文件路径,即 MusicFileDirectory/1,所以它不会按数字排序。

我如何让排序命令只对文件路径的最后部分进行排序,所以我可以输入“mplay /home/james/Music/MusicFileDirectory”,它只使用目录中文件的名称来排序播放列表?

4

2 回答 2

2

我不是 100% 确定它会起作用,但试试 sort -V。

编辑:正如 jordanm 所说,这显然是一个较新的 GNU 扩展。

于 2012-06-25T21:35:43.703 回答
0

排序具有指定字段分隔符(-t)和位置(-k)的选项。类似的东西: sort -n -t/ -k2

也就是说,如果您想要一个通用的解决方案可以从任何目录工作,恐怕单行别名会太难(而且复杂)。您最好使用一个小脚本,您将首先计算路径中“/”的数量(例如x),然后执行sort -n -t/ -k$((x+1))

于 2012-06-25T21:51:37.213 回答