再帰的に検索するときにパスプレフィックスを選択するようにgrepにどのように割り当てますか?

再帰的に検索するときにパスプレフィックスを選択するようにgrepにどのように割り当てますか?

はい。私が探している言葉があります。「猫」。私はその単語が現在の作業ディレクトリの下のどこにでも配置できることを知っています。だから私は使うgrep -r、これは次の形式の結果を提供します。

./example_root/[dir1|dir2]/[SOME_ARBITRARY_SUBPATH]/cat_file,

どこ

猫ファイル

単語を含むファイル。「猫」。私が興味を持っているだけに興味があればどうでしょうか?

/example_root/dir1/[何でも_パス]

私のパスのプレフィックス?どう言うの?grep

答え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

関連情報