-EXECを使用してFIND結果を特定してファイルに出力するにはどうすればよいですか?

-EXECを使用してFIND結果を特定してファイルに出力するにはどうすればよいですか?

たとえば、説明するのが最善です。

私はできます:

find . -name "*.py" -type f > output.txt

ただし、出力を同じファイルに保存する方法は次のとおりです。

find . -name "*.py" -type f -exec grep "something" {} \

私はできません。

find . -name "*.py" -type f -exec grep "something" {} \ > output.txt

ベストアンサー1

私が正しく理解したなら、これはあなたが望むものです:

find . -name '*.py' -print0 | xargs -0 grep 'something' > output.txt

その行のみを.py含む拡張子を持つすべてのファイルを検索し、その行を 。ファイルがある場合は切り捨てられない場合は作成されます。grepsomethingoutput.txtoutput.txt

使用-exec:

find . -name '*.py' -exec grep 'something' {} \; > output.txt

ここにChris Downsのコメントを統合します。上記のコマンドを使用すると、指定されたテスト(上記の単一テストのみ)を通過するパス名を見つけるgrepために複数回実行されます。ただし、に置き換えると、複数のパス名(最大特定の制限)で呼び出されます。find-name\;+grepfind

問題を見るfindとexecでのセミコロン(;)とプラス記号(+)の使用の比較このトピックに関する追加情報。

おすすめ記事