たとえば、説明するのが最善です。
私はできます:
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
含む拡張子を持つすべてのファイルを検索し、その行を 。ファイルがある場合は切り捨てられない場合は作成されます。grep
something
output.txt
output.txt
使用-exec
:
find . -name '*.py' -exec grep 'something' {} \; > output.txt
ここにChris Downsのコメントを統合します。上記のコマンドを使用すると、指定されたテスト(上記の単一テストのみ)を通過するパス名を見つけるgrep
ために複数回実行されます。ただし、に置き換えると、複数のパス名(最大特定の制限)で呼び出されます。find
-name
\;
+
grep
find
問題を見るfindとexecでのセミコロン(;)とプラス記号(+)の使用の比較このトピックに関する追加情報。