Linux grep可以根据目录查找么

需求是: 我想查找根目录/下面的哪些文件都包含test这个字符串。但是grep好像只能指定文件名来查找。我现在只能根据test字符串去找文件,要怎么做?

阅读 4.6k
3 个回答

grep是可以根据目录来检索字符串在哪个文件的,不需要造轮子。
比如kop/目录下有a,b,c三个文件,其中一个文件里有test这个字符串,你想知道test是在a/b/c文件中,可以用:grep -r test kop/grep test -r kop/也行。
-r这个选项在很多命令里都有递归文件夹的意思,如rm -r , cp -r 等

如果硬要造轮子,也行

#!/bin/bash
for i in kop/*;do
    if [ -n "$(grep test $i)" ];then
        echo -n "$i :"
        grep test $i
        echo
    fi
done

clipboard.png

后面有个说grep test -rw 目录的,加上-w是完全符合才匹配,即某一行只有test这个字符串才匹配。

grep 'test' -rw 根目录

你需要可能是这个:

grep -rl 'test' / 
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进