find コマンドによって返されたファイルのリストを cat にパイプしてすべてのファイルを表示する方法 質問する

find コマンドによって返されたファイルのリストを cat にパイプしてすべてのファイルを表示する方法 質問する

findファイルのリストを取得するためにを実行しています。

これらすべてのファイルの内容を表示するcatように、別のユーティリティにパイプするにはどうすればよいでしょうか?cat

その後、それを使用して、grepそれらのファイル内のテキストを検索します。

ベストアンサー1

  1. 別のプロセスにパイプします (ただし、これでは目的を達成できません):

     command1 | command2
    

    これにより、command1 の出力が command2 の入力として送信されます。

  2. -exec(これはあなたがやりたいことを実行しますが、にfind固有ですfind):

     find . -name '*.foo' -exec cat {} \;
    

    findとの間にあるすべては、-execすでに使用していた検索述語です。 は、{}見つかった特定のファイルをコマンド (cat {}この場合は ) に置き換えます。 は、コマンドを\;終了します-exec

  3. あるプロセスの出力をコマンドライン引数として別のプロセスに送信します。

     command2 `command1`
    

    例えば:

     cat `find . -name '*.foo' -print`
    

    これらは通常の引用符ではなくバッククォート~であることに注意してください (キーボードのチルダの下にあります)。

    これにより、 の出力がコマンドライン引数として送信されますcommand1。これはコマンド置換command2と呼ばれます。ただし、スペース (改行など) を含むファイル名は、個別の引数に分割されることに注意してください。

おすすめ記事