Linux命令-管道命令

Linux命令-管道命令,linux,shell,command,piping,Linux,Shell,Command,Piping,我尝试了以下命令find~/dir1*.m4a | play 目录dir1中正好有一个M41文件,我想播放它 然而,我从游戏中得到了一个使用错误。为什么?您编写的内容指示将find命令(m4a文件)的输出作为下一个命令play的输入发送过来 现在,我不知道那个剧本到底是什么,但很可能它的语法是这样的: play filename 但你所写的翻译为: play < "filename" 其结果是: play foundfile1 foundfile2 ... 试试另一种方法: play

我尝试了以下命令
find~/dir1*.m4a | play

目录dir1中正好有一个M41文件,我想播放它
然而,我从游戏中得到了一个使用错误。为什么?

您编写的内容指示将find命令(m4a文件)的输出作为下一个命令play的输入发送过来

现在,我不知道那个剧本到底是什么,但很可能它的语法是这样的:

play filename
但你所写的翻译为:

play < "filename"
其结果是:

play foundfile1 foundfile2 ...
试试另一种方法:

play ~/dir1 *.m4a
如果不工作-检查播放是否支持m4a

或者尝试在pip行中使用xargs

xargs play

可能是游戏,不要使用标准输入,所以必须使用xargs

 find ~/dir1 \*.m4a |xargs play

您正在尝试通过管道将文件内容传输到播放中(即通过STDIN发送)。就我从play手册页上所见,它不能这样做

您希望发送查找要播放的文件名,如下所示:


查找~/dir1*.m4a | xargs play

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

您确定
play
接受其STDIN中的文件吗?幸运的是,当前目录中不包含.m4a文件,在这种情况下,您的原始答案将不起作用。对于
find
,必须在模式中转义shell元字符。我已经更新了你的答案。
 find ~/dir1 \*.m4a |xargs play