2012-06-15 50 views
3

我尝试下面的命令find ~/dir1 *.m4a | playLinux命令 - 管道命令

dir1目录恰好有1个M4A文件中它,我想它播放 但我得到发挥用法错误。为什么?

+0

您确定'play'接受来自STDIN的文件吗? –

回答

2

可能发挥请勿使用STDIN,因此您必须使用xargs

find ~/dir1 \*.m4a |xargs play 
+1

你很幸运,当前目录不包含a.m4a文件,在这种情况下,你的原始答案将不起作用。你必须在'find'的模式中转义shell元字符。我已经更新了你的答案。 –

3

你写什么指示find命令的输出(M4A档案)被发送超过作为输入下一个命令,玩耍。

现在,我不知道那部戏恰恰是,但最有可能的,它的语法是类型:

play filename 

但是你所写的语句:

play < "filename" 

所以,你可能想要做的就是使用像xargs这样的命令,它将完成如下操作:

find ~/dir1 *.m4a | xargs play 

其中结果为:

play foundfile1 foundfile2 ... 
-1

尝试另一种方式:

play ~/dir1 *.m4a 

如果不工作 - 检查是否发挥支持M4A

或xargs的尝试在你的点子线

xargs play 
1

您正在尝试将文件内容放入播放状态(即,通过STDIN发送)。据我所看到的从播放手册页,它不能做到这一点。

你想发送找到发挥的文件名,如:

查找〜/ DIR1 * .m4a的| xargs play

1

使用find -name *.mp4 -exec play {} /;