如何选择文件并将其发送给vlc播放器

时间:2015-12-10 18:38:08

标签: unix

我想使用命令终端开始播放歌曲。

在我的目录中,当我这样做时,它会打印

ls
AlbumArtSmall.jpg
Folder.jpg
[SongsPK.info] Table No 21 - 02 - Man Mera.mp3
[Songs.PK] Table No 21 - 01 - O Sajna.mp3
[Songs.PK] Table No 21 - 02 - Man Mera.mp3

我想播放第三首歌, 所以我写了这个命令

ls |sed -n "3p"|vlc

但它没有播放歌曲,vlc播放器只是打开,但不播放。 怎么解决这个问题?

尝试下面的答案后

ls|sed -n "3p"|xargs -0 vlc

给了我另一个错误

VLC media player 2.2.0 Weatherwax (revision 2.2.0-0-g1349ef2)
[00000000018eb118] core libvlc: Running vlc with the default interface. Use 'cvlc' to use vlc without interface.
[00007fea5c000f28] filesystem access error: cannot open file /media/gautam/S.T.U.F.F/songs/table no.21/[SongsPK.info] Table No 21 - 02 - Man Mera.mp3
 (No such file or directory)
[00007fea600009b8] core input error: open of `file:///media/gautam/S.T.U.F.F/songs/table%20no.21/%5BSongsPK.info%5D%20Table%20No%2021%20-%2002%20-%20Man%20Mera.mp3%0A' failed

有人能解释我为什么会这样吗?

3 个答案:

答案 0 :(得分:0)

vlc期望文件名作为命令行参数传递,这是你不做的事情。您将文件名传递给vlc的stdin,在那里它没有查看/期待它们。

尝试

Data

代替。 xargs从stdin(管道)获取东西并将它们变成命令行参数。

答案 1 :(得分:0)

ls|sed -n "3p"|xargs -0 vlc
     

给了我另一个错误

open of `…%5BSongsPK.info%5D%20Table%20No%2021%20-%2002%20-%20Man%20Mera.mp3%0A' failed
     

有人能解释我为什么会这样吗?

这种情况正在发生,因为-0选项xargs会导致文件名后的换行符无法删除(正如我们在上面的%0A中看到的那样)。
您可以更正并同时将命令简化为:

vlc "`ls|sed -n 3p`"

答案 2 :(得分:0)

另一个答案解释了这个问题,但我只是想提出一个更清洁的解决方案(我认为):

find -iname "*mp3" | shuf | xargs --delimiter '\n' /Applications/VLC.app/Contents/MacOS/VLC

关键是xargs的--delimiter '\n'选项。

旁注-我没有意识到您可以这样做。很高兴这已发布。