【发布时间】:2012-06-18 10:34:09
【问题描述】:
我尝试了以下命令find ~/dir1 *.m4a | play
目录 dir1 中正好有 1 个 m4a 文件,我想播放它 然而,我从游戏中得到了一个使用错误。为什么?
【问题讨论】:
-
您确定
play接受来自其STDIN 的文件吗?
标签: linux shell command piping
我尝试了以下命令find ~/dir1 *.m4a | play
目录 dir1 中正好有 1 个 m4a 文件,我想播放它 然而,我从游戏中得到了一个使用错误。为什么?
【问题讨论】:
play 接受来自其STDIN 的文件吗?
标签: linux shell command piping
您编写的内容指示将 find 命令的输出(一个 m4a 文件)通过 作为输入发送到下一个命令,播放。
现在,我不知道那场戏到底是什么,但很可能,它的语法是这样的:
play filename
但是你写的翻译成:
play < "filename"
所以,您可能想要做的是使用 xargs 之类的命令,它可以做到这一点:
find ~/dir1 *.m4a | xargs play
结果:
play foundfile1 foundfile2 ...
【讨论】:
可能玩不使用STDIN,所以你必须使用xargs
find ~/dir1 \*.m4a |xargs play
【讨论】:
find 的模式中转义 shell 元字符。我已经更新了你的答案。
您正在尝试通过管道传输文件的内容(即通过 STDIN 发送)。据我从播放手册页中看到,它不能这样做。
你想发送找到播放的文件名,像这样:
找到 ~/dir1 *.m4a | xargs 播放
【讨论】:
使用find -name *.mp4 -exec play {} /;
【讨论】:
换个方式试试:
play ~/dir1 *.m4a
如果不工作 - 检查播放是否支持 m4a
或尝试在您的 pip 行中使用 xargs
xargs play
【讨论】: