首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >排序,mplayer和xargs

排序,mplayer和xargs
EN

Stack Overflow用户
提问于 2014-05-28 21:11:18
回答 2查看 461关注 0票数 1

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

代码语言:javascript
复制
ls | sort -nk4 | playlist

然后

代码语言:javascript
复制
mplayer -playlist playlist

但我希望能够做到这一点,而不创建一个播放列表文件。到目前为止我所拥有的最好的是

代码语言:javascript
复制
ls | sort -nk4 | xargs -I{} mplayer {}

这似乎是可行的,但我无法使用任何正常的mplayer控件。我很好奇这是否可能。似乎你应该按你的方式打字

代码语言:javascript
复制
mplayer songA.flac songB.flac songC.flac...

而且效果很好。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-05-28 22:39:47

一旦mplayer需要管道,它的std input现在就连接到管道上,而不是键盘,所以mplayer的控件停止工作--尝试如下:

代码语言:javascript
复制
eval mplayer $( printf "%q\n" * | sort -n -k4 )

或者如果您的ls-Q (报价)选项:

代码语言:javascript
复制
eval mplayer $( ls -Q | sort -n -k4 )
  • 但是,请注意,最好的方法是按照建议使用临时文件。它们提供了更多的灵活性,避免了引用问题,您可以在完成之后删除它们。把它们放在/tmp下面。
  • 引用说明符%q of printf引用文件名-歌的名称可以包含各种字符。
  • eval需要去掉额外的引用层,因此mplayer只看到正确引用的文件名。

正如您所看到的,有些混乱,所以我再次建议使用临时文件(在那里,做了:)。

票数 1
EN

Stack Overflow用户

发布于 2014-07-17 19:16:26

如果使用GNU并行,您可以这样做:

代码语言:javascript
复制
ls | sort -nk4 | parallel --tty -Xj1 mplayer

即使您的文件名包含空格,这也是可行的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23921955

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档