我创建了一个测试目录结构: t1.html t2.php A / t1.html A / t2.php B / t1.html B / t2.php
所有文件都包含字符串" HELLO"。
以上命令从上面的根文件夹运行:
> grep -r "HELLO" *
b/t1.html:HELLO
b/t2.php:HELLO
c/t1.html:HELLO
c/t2.php:HELLO
t1.html:HELLO
t2.php:HELLO
> grep -r --include=*.html "HELLO" *
b/t1.html:HELLO
c/t1.html:HELLO
t2.php:HELLO
为什么它包含来自子目录的正确.html文件,但是来自当前目录的.php文件?
如果我弹出一个级别到我整个结构上方的目录,那么它会给出以下结果:
grep -r --include=*.html "HELLO" *
a/t1.html:HELLO
a/c/t1.html:HELLO
a/b/t1.html:HELLO
这是我从结构中跑出来的预期。
我假设我可以一起使用find + grep实现目标,但我认为这是grep的有效用法。
感谢您的帮助。
安迪
答案 0 :(得分:1)
使用点而不是星号:
grep -r HELLO .
由shell评估星号,并替换为当前目录中所有文件的列表(其名称不以点开头)。然后所有这些都是递归地插入。