Linux命令 – pipe道命令

我试过下面的命令find ~/dir1 *.m4a | play find ~/dir1 *.m4a | play

目录dir1正好有1个m4a文件,我希望它被播放但是我得到一个使用错误从播放。 为什么?

可能会发挥不使用STDIN所以你必须使用xargs

  find ~/dir1 \*.m4a |xargs play 

你写的东西指示find命令的输出(一个m4a文件) 作为输入发送到下一个命令play。

现在,我不知道这是什么玩法,但最有可能的是,它的语法是这样的:

 play filename 

但是你写的是:

 play < "filename" 

所以,你可能想要做的就是使用像xargs这样的命令,

 find ~/dir1 *.m4a | xargs play 

其结果是:

 play foundfile1 foundfile2 ... 

您正试图将文件的内容管道化(即通过STDIN发送)。 据我所见,从剧本的手册页,它不能做到这一点。

你想发送找到的文件名,像这样:

找到〜/ dir1 * .m4a | xargs玩

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

尝试另一种方式:

 play ~/dir1 *.m4a 

如果不工作 – 检查是否支持m4a

或者在你的点子线中尝试xargs

 xargs play