305

xenserver を使用して、ディレクトリ内の各ファイルに対してコマンドを実行し、コマンドの出力からいくつかのものを grep してファイルに追加したいと考えています。

使用したいコマンドと、必要に応じて文字列を grep する方法については明確です。

しかし、私がはっきりしていないのは、ファイルが見つからなくなるまで、各ファイルに対してこのコマンドを実行し、次のコマンドに進む方法です。

4

5 に答える 5

302

grep $PATTERN *で十分でしょう。デフォルトでは、grep はすべてのサブディレクトリをスキップします。ただし、それらをgrepしたいgrep -r $PATTERN *場合はそうです。

于 2013-03-08T05:35:59.240 に答える
285

Linux では、通常、このコマンドを使用してgrep、ディレクトリ内の特定のテキストを再帰的に検索します。

grep -rni "string" *

どこ

  • r= 再帰的、つまり現在のディレクトリ内のサブディレクトリを検索
  • n= 行番号を出力するstdout
  • i= 大文字と小文字を区別しない検索
于 2013-03-08T05:33:38.493 に答える
43

検索を使用します。真剣に、それがどのファイルを操作しているかを実際に確認できるため、これが最善の方法です。

find . -name "*.sql" -exec grep -H "slow" {} \;

-H は Mac 固有のものであり、結果にファイル名が表示されることに注意してください。

于 2015-02-04T19:19:55.393 に答える
1

複数のコマンドを実行したい場合は、次を使用できます。

for I in `ls *.sql`
do
    grep "foo" $I >> foo.log
    grep "bar" $I >> bar.log
done
于 2015-02-04T19:31:17.147 に答える