find . -type f \( -name "*.java" -o -name "*.xml" \) -not -path "./out/*" -exec grep -irnE 'activity|class' {} +
- 多关键词搜索:使用正则表达式
'pattern1|pattern2'
同时搜索多个关键词(如activity|class
) - 单关键词搜索:支持单个关键词搜索(如
'MainActivity'
),如果你只需要搜一个则'xxxxxx'即可 - 多格式搜索:同时搜索
.java
和.xml
文件(可扩展为.kt
、.gradle
等) 单格式搜索:支持只搜索特定类型的文件(如仅
.xml
)\( -name "*.java" \)即可- 排除特定目录:通过
-not -path "./out/*"
排除./out
目录及其子目录 - 多目录排除:支持同时排除多个目录(如
./build
、./.gradle
) - 递归搜索:遍历当前目录及其所有子目录
- 仅搜索文件:通过
-type f
参数跳过目录,只搜索文件】 - 不区分大小写:通过
-i
参数忽略大小写差异 - 显示行号:通过
-n
参数显示匹配行的行号
命令解析:
文件筛选部分:
find . -type f \( -name "*.java" -o -name "*.xml" \) -not -path "./out/*"
-type f
:仅搜索文件\( -name "*.java" -o -name "*.xml" \)
:筛选.java
或.xml
文件(可根据需要调整)-not -path "./out/*"
:排除./out
目录及其子目录
内容搜索部分:
-exec grep -irnE 'activity|class' {} +
-exec ... {} +
:对找到的文件执行 grep 命令-i
:不区分大小写-r
:递归搜索(此处由 find 完成递归,grep 仅处理单个文件)-n
:显示行号-E
:使用扩展正则表达式'activity|class'
:搜索内容(可替换为任意正则表达式,如'pattern1|pattern2'
)
使用示例:
搜索 "MainActivity" 或 "Fragment":
find . -type f \( -name "*.java" -o -name "*.xml" \) -not -path "./out/*" -exec grep -irnE 'MainActivity|Fragment' {} +
仅搜索 .xml 文件中的 "layout":
find . -type f -name "*.xml" -not -path "./out/*" -exec grep -irnE 'layout' {} +
排除多个目录(如 build 和 .gradle):
find . -type f \( -name "*.java" -o -name "*.xml" \) -not \( -path "./out/*" -o -path "./build/*" -o -path "./.gradle/*" \) -exec grep -irnE 'activity' {} +