【问题标题】:Linux commands - piping commandsLinux 命令 - 管道命令
【发布时间】:2012-06-18 10:34:09
【问题描述】:

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

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

【问题讨论】:

  • 您确定play 接受来自其STDIN 的文件吗?

标签: linux shell command piping


【解决方案1】:

您编写的内容指示将 find 命令的输出(一个 m4a 文件)通过 作为输入发送到下一个命令,播放。

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

play filename

但是你写的翻译成:

play < "filename"

所以,您可能想要做的是使用 xargs 之类的命令,它可以做到这一点:

find ~/dir1 *.m4a | xargs play

结果:

play foundfile1 foundfile2 ...

【讨论】:

    【解决方案2】:

    可能玩不使用STDIN,所以你必须使用xargs

     find ~/dir1 \*.m4a |xargs play
    

    【讨论】:

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

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

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

    找到 ~/dir1 *.m4a | xargs 播放

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        【解决方案5】:

        换个方式试试:

        play ~/dir1 *.m4a
        

        如果不工作 - 检查播放是否支持 m4a

        或尝试在您的 pip 行中使用 xargs

        xargs play
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2017-06-03
          • 2021-05-10
          • 2012-03-19
          • 2023-03-23
          • 1970-01-01
          • 1970-01-01
          • 2016-08-11
          相关资源
          最近更新 更多