当前位置: 首页 > news >正文

Android开发工程师:Linux一条find grep命令通关搜索内容与文件

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' {} +

http://www.dtcms.com/a/286837.html

相关文章:

  • ffplay显示rgb565格式的文件
  • CentOS下安装Mysql
  • Prometheus错误率监控与告警实战:如何自定义规则精准预警服务器异常
  • 【Linux】Linux异步IO-io_uring
  • YOLO融合CAF-YOLO中的ACFM模块
  • 怎么解决Spring循环依赖问题
  • go安装使用gin 框架
  • 在Jetson部署AI语音家居助手(二):语音激活+语音转文字
  • RS485转PROFIBUS DP网关写入命令让JRT激光测距传感器开启慢速模式连续测量
  • Angular项目IOS16.1.1设备页面空白问题
  • Windows 环境下递归搜索文件内容包含字符串
  • 亚马逊广告高级玩法:如何通过ASIN广告打击竞品流量?
  • 关于一个引力问题的回答,兼谈AI助学作用
  • 读书笔记:《动手做AI Agent》
  • el-date-picker 如何给出 所选月份的最后一天
  • C++ -- STL-- stack and queue
  • 通付盾即将亮相2025世界人工智能大会丨携多智能体协同平台赋能千行百业
  • 如何写python requests?
  • [Linux]如何設置靜態IP位址?
  • LangChain 源码剖析(七)RunnableBindingBase 深度剖析:给 Runnable“穿衣服“ 的装饰器架构
  • Vuex 基本概念
  • Java HashMap高频面试题深度解析
  • Redis高频面试题:利用I/O多路复用实现高并发
  • 在java后端项目中,controller、dal、service的作用是什么?
  • 从 0 安装 Label Studio:搭建可后台运行的数据标注平台(systemd 实践
  • 微服务项目总结
  • 【c++】中也有floor函数吗?他与JavaScript中的floor有啥区别?
  • 【iOS】消息传递和消息转发
  • Ubuntu系统下快速体验iperf3工具(网络性能测试)
  • CAN通信静默模式的原理与应用