我在下面的“ lxadmin ”目录中有许多.conf文件 ,并怀疑文本“ tanguay.info ”在其中的某个地方。
我做这个命令:
cat /etc/httpd/conf/lxadmin/* | grep "tanguay.info"
它告诉我:
cat: /etc/httpd/conf/lxadmin/forward: Is a directory Include /home/httpd/tanguay.info/conf/lxadmin.tanguay.info
所以我知道它在哪里,但它不告诉我在哪个文件中 。
我怎样才能告诉我文本在哪个文件?
grep“tanguay.info”/ etc / httpd / conf / lxadmin / *,只要该文件不在子目录下即可。
如果有可以使用的子目录
rgrep "tanguay.info" /etc/httpd/conf/lxadmin/
要么
grep -r "tanguay.info" /etc/httpd/conf/lxadmin/
编辑:
你也可以使用ack ,这是一个用perl编写的增强型grep(独立版本不需要dep)。 ack默认通过目录recursionsearch。
ack "tanguay.info" /etc/httpd/conf/lxadmin/
在Ubuntu上,你可以在ack-grep包中find它。
你正在寻找的是grep选项-H ,它显示匹配的文件名和匹配。 您还可以添加-r以recursion方式search目录。 即
$ grep -r -H "tanguay.info" /etc/httpd/conf/lxadmin/
找
找 。 | xargs grep'string'-sl
-s用于摘要,不会显示警告消息,如grep:./directory-name:是一个目录
-l是列表,所以我们只得到文件名,而不是结果中显示的所有匹配的实例。
# cd /directory/of/files/ # grep -A 5 -B 5 'keywords' *
显示前5行和后3行,以便您可以看到关键字的上下文
使理解在文件中如何使用关键字的所有不同
grep -Rl "tanguay.info" /etc/httpd/conf/lxadmin/
在Windows系统上:
type *.* | find "<string>"
顺便说一下,引号必须在那里。
您可以使用反引号在文件中查找。 [ ` – >键上面的数字1键到Tab键]
grep -wn“tanguay.info” find /etc/httpd/conf/lxadmin/ -iname "*.conf"
上面的代码首先得到* .conf文件,然后在结果中search“tanguay.info”。
在超级用户login中运行上述命令以避免权限问题。
下面的独奏与Izzy的反应非常相似,但是提供了更多的灵活性。 我发现它非常有用,当我需要做更多的xargs将允许(特别是在较旧的SunOS系统,其中grep -r或rgrep不可用)
find . -name "*.conf" -exec grep -l tanguay.info {} \;
很简单,你正在find所有的* .conf文件,并对每个find的结果执行一个grep。 \; 完成命令的-exec部分。