為什麼這個使用管道的命令不起作用?

為什麼這個使用管道的命令不起作用?

為什麼find . | cat有效(列印所有文件名)但是find . | file -i不能顯示所有檔案 mime 類型?

它不應該工作,因為有一個輸出find .和一個輸入file -i它不應該工作嗎?

(抱歉,如果這是一個愚蠢的問題,我是一個使用 bash 的初學者,我找不到另一個可以向我解釋這一點的問題)

答案1

使用管道,右側的命令讀取其 stdin 通道上的資料。這file命令要求檔案是命令列參數,而不是標準輸入上的資料。

這正是該xargs命令的用途:從 stdin 讀取,並提供資料作為命令列參數:

find . | xargs file -i

或者,使用以下-f選項file

find . | file -i -f -

請閱讀手冊頁以獲取更多詳細資訊。

相關內容