sort,mplayer和xargs

时间:2014-05-28 21:11:19

标签: xargs mplayer

我有一个充满音乐文件的目录,我想在mplayer中播放。我想按照它们的轨道号顺序播放这些文件,它们是文件名中的第四个字段(空格分隔)。我知道我可以这样做:

ls | sort -nk4 |播放列表 然后 mplayer -playlist播放列表 但我希望能够在不创建播放列表文件的情况下完成。我到目前为止最好的是

ls | sort -nk4 | xargs -I {} mplayer {}

这似乎有效但我无法使用任何正常的mplayer控件。我很好奇这是否可能。它似乎应该是你可以输入的 mplayer songA.flac songB.flac songC.flac ...而且效果很好。

感谢。

2 个答案:

答案 0 :(得分:1)

使用GNU parallel你可以这样做:

ls | sort -nk4 | parallel --tty -Xj1 mplayer

即使文件名包含空格,也可以使用。

答案 1 :(得分:0)

mplayer在管道之后,其std input现在连接到管道而不是键盘,因此mplayer的控件停止工作 - 请尝试以下方法:

eval mplayer $( printf "%q\n" * | sort -n -k4 )

或者ls-Q(引用)选项:

eval mplayer $( ls -Q | sort -n -k4 )
  • 但请注意,最好的方法是使用建议的临时文件。它们提供了更大的灵活性,避免了引用问题,您可以在完成后删除它们。将它们放在/tmp
  • %q的引用说明符printf引用文件名 - 歌曲的名称中可以包含各种字符。
  • eval需要删除额外的引用层,因此mplayer只能看到正确引用的文件名。

有点乱,如你所见,所以我再次建议使用临时文件(在那里,做到了:)。