如何向grep指定我要在递归搜索时选择路径前缀?

如何向grep指定我要在递归搜索时选择路径前缀?

例子。我有一个我正在寻找的词,说“猫”。我知道这个词可以位于当前工作目录下的任何位置。所以我用grep -r,这给出了以下形式的结果:

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

在哪里

猫文件

是包含该单词的文件“猫”。如果我只感兴趣怎么办

/example_root/dir1/[whatever_path]

我的路径的前缀?我该如何告诉它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

相关内容