1. ホーム
  2. search

[解決済み] grepを再帰的に使用する

2022-03-09 02:34:55

質問

grep には、再帰的に検索する機能があります。 -r オプションを使用します。しかし、私は grep が指定された数のサブフォルダ・レベルに対して再帰的にクエリ文字列を検索する機能を持っているかどうか疑問に思っていました。例えば、あるフォルダー root というフォルダがあり parent1, parent2, ..., parentN . それぞれの親フォルダには、通常のテキストファイルと child1, child2, ..., childM . ルートレベルでgrepを実行し、子フォルダを見ずに親フォルダ内のファイルを検索したいのですが、どうすればよいでしょうか?これを行うための簡単な方法はありますか?

どのように解決するのですか?

を試してみてください。

グレップ :

 --exclude=GLOB
              Skip files whose base name matches GLOB  (using
              wildcard  matching).   A file-name  glob  can  use *,
              ?, and [...]  as wildcards, and \ to quote a wildcard
              or backslash character literally.

       --exclude-from=FILE
              Skip files whose base name matches any of the file-name
              globs  read  from FILE (using wildcard matching as
              described under --exclude).

       --exclude-dir=DIR
              Exclude directories matching the pattern DIR from
              recursive searches.

または、次のように使用します。 find | xargs grep

を使用すると、レベルを定義することができます。

EDIT

あるコマンドの出力を別のコマンドにパイプすることは、Linux/Unixの世界では非常によくあることです。きっと毎日やっていることでしょう。

echo "abc"|sed 's/a/x/'
find . -name "*.pyc" |xargs rm
awk 'blahblah' file | sort |head -n2 
tree|grep 'foo'
mvn compile|ack 'error'
...

上記の例のすべてが効率的であるとは限らないことに注意してください。あくまで例です。