find
閲覧したいファイルのリストを使用してインポートしていますgrep
。そのリストをどのようにパイプしますかgrep
?
ベストアンサー1
さて、stdoutに書き込むすべてのコマンドに適用される一般的なケースはを使用することです。xargs
これにより、コマンドの最後に必要な数のコマンドライン引数を追加できます。
$ find … | xargs grep 'search'
バックティックを使用するか、grep
行にコマンドを挿入すると、コマンドが$()
実行され、出力が置き換えられます。
$ grep 'search' $(find …)
\'"
ファイル名にスペースやその他の「奇妙な文字」(xargsの場合\[*?
)が含まれていると、これらのコマンドは機能しません$(find …)
。
しかし、特定の状況では、find
与えられた引数に基づいてプログラムを実行する機能が組み込まれています。
$ find … -exec grep 'search' {} \;
-exec
との間のすべての内容は;
実行されるコマンドです。{}
見つかったファイル名に置き換えられますfind
。これはgrep
、各ファイルに対して別々のタスクを実行します。複数のファイル名をインポートしてすべて検索できるため、findに一致するすべてのファイル名を一度に渡すようにgrep
変更できます。;
+
grep
$ find … -exec grep 'search' {} \+