パイプを使用するこのコマンドが機能しないのはなぜですか?

パイプを使用するこのコマンドが機能しないのはなぜですか?

なぜ、find . | catすべてのファイル名の印刷は機能するのに、find . | file -iすべてのファイルの MIME タイプの表示は機能しないのでしょうか?

からの出力find .とからの入力があるので動作するのではないでしょうかfile -i?

(愚かな質問だったらごめんなさい。私は bash 初心者で、これを説明できる他の質問を見つけることができませんでした)

答え1

パイプを使用すると、右側のコマンドは stdin チャネル上のデータを読み取ります。fileコマンドでは、ファイルは stdin 上のデータではなく、コマンド ライン引数である必要があります。

このコマンドの目的はまさにこれですxargs。stdin から読み取り、データをコマンドライン引数として提供します。

find . | xargs file -i

または-fオプションを使用しますfile:

find . | file -i -f -

詳細については、man ページをお読みください。

関連情報