Linux中grep命令查找指定文件中的内容

摘要:Linux中grep命令查找指定文件中的内容

问题描述

最近遇到一个问题,tomcat 中的程序要获取一个 properties 文件中配置的值,但获取的值并不是想要的。

配置文件:

1
/opt/tomcat/webapps/ROOT/WEB-INF/classes/system.properties

文件内容:

1
2
3
# ...
uploadToCloud=3
# ...

正常情况下,获取到的值应该是3,但实际上获取到的值是1。

因为程序是通过 spring 框架将加载了所有配置文件,所以考虑是有其他子项目也定义了相同的配置项。

于是需要搜索 webapps 目录下的所有项目中,文件名为 system.properties 的,文件内容中包含 uploadToUpload 的文件。

1
2
3
4
5
[root@tomcat ~]# cd /opt/tomcat/webapps/
[root@tomcat webapps]# grep -rn --include="system.properties" 'uploadToCloud' ./*
./ROOT/WEB-INF/classes/system.properties:34:uploadToCloud=3
./schoolnews/WEB-INF/classes/system.properties:31:uploadToCloud=1
[root@tomcat webapps]

果然找到了:在 schoolnews 项目中也有这个配置,将其改正即可。

总结

grep用法: grep [选项]... PATTERN [FILE]...

1
grep -rn --include="*.properties" 'uploadToCloud' ./*

选项说明:

  • -r : 递归搜索下级目录
  • -n : 显示行号
  • –include=FILE_PATTERN : 仅搜索匹配FILE_PATTERN的文件(支持通配符)

更多参见:grep –help