例子。我有一个我正在寻找的词,说“猫”。我知道这个词可以位于当前工作目录下的任何位置。所以我用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