なぜ、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 ページをお読みください。