我正在尝试为mplayer编写一个命令,它将按顺序播放目录中的所有音乐文件。
alias mplay='mplayer -playlist <(find "$PWD" -type f|sort -n)'
如果我已经在我正在播放音乐的目录中,这可以正常工作。事实上,如果我在一个目录中,它甚至可以工作,例如我输入'mplay MusicFileDirectory'。
但是,当我不在我播放的目录中且文件编号为1,2,3 ... 10,11等(而不是01,02 ... 11)时,命令会中断 - 10 ,现在在第二个文件之前播放了11个文件。
这是因为sort正在应用于扩展文件路径,即MusicFileDirectory / 1,因此它不会按数字排序。
我如何获得sort命令只对文件路径的最后部分进行排序,因此我可以输入'mplay / home / james / Music / MusicFileDirectory'作为示例,它只使用目录中文件的名称对播放列表进行排序?
答案 0 :(得分:2)
我不是100%确定它会起作用,但是尝试排序-V。
编辑:正如jordanm所说,这显然是一个新的GNU扩展。
答案 1 :(得分:0)
Sort具有指定字段分隔符(-t)和位置(-k)的选项。就像是:
sort -n -t/ -k2
。
也就是说,如果你想在任何目录中使用通用解决方案,恐怕单线程别名太难(而且复杂)。你最好使用一个小脚本,首先计算路径中的“/”数(比如说x
),然后做sort -n -t/ -k$((x+1))