2012-06-15 201 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 {} /;