再帰的に検索するときにパスプレフィックスを選択するように grep に指定するにはどうすればよいですか?

再帰的に検索するときにパスプレフィックスを選択するように grep に指定するにはどうすればよいですか?

例えば、私が探している単語があるとします。"猫"そして、その単語は現在の作業ディレクトリの下のどこにでも置けることが分かっています。そこで、grep -r結果は次の形式で得られます。

./example_root/[dir1|dir2]/[任意のサブパス]/cat_file,

どこ

猫ファイル

単語を含むファイルです"猫"もし私が興味があるのが

/example_root/dir1/[任意のパス]

パスのプレフィックスは?グレップ?

答え1

私は試してみたい

grep -rl cat directory | xargs dirname

どこ

  • grep -rl cat directory-rディレクトリ内でcatを 再帰的に検索し( )、 -l​​lisyファイル内で検索します( )。
  • | xargs dirname各ファイルは に「与えられ」dirname、ファイル部分が削除されます。

答え2

@Kusalanandaのコメントの答えは私が求めていたものです。

grep -r 'cat' /example_root/dir1/

ただし、単語が存在するディレクトリ名を取得したい場合は、次の方法 (@Archemar 提供) が便利です。

grep -rl cat directory | xargs dirname

関連情報