find -name 搜索命令及搜索结果显示颜色设置

在 Linux 下用 grep 时高亮显示匹配的部分

用 grep 匹配文件时,显示结果黑压压的一片,在你执行find命令前,先执行一下这条命令,重新 grep 试试看
export GREP_OPTIONS='--color=auto'
好看多了,不是吗?
 也可以这命令加入到bash_profile,以后就没必要每次搜索前都执行export GREP_OPTIONS='--color=auto'命令
你可以把 export GREP_OPTIONS='--color=auto' 这条命令添加到 ~/.bash_profile 或.bashrc文件(具体可自己进入自己用户目录下执行ls -al 查看)的最后,重新登录一下就能生效了

备注 .bash_profile 文件就在你当前用户目录下面:

[第1步] cd ~, [第二步] ll 或是ls -al 

已可以看到该文件,但并不是每个人的电脑的是这个文件,当有没有这个文件时必要.bashrc 文件,将 export GREP_OPTIONS='--color=auto' 命令加入 .bashrc文件最后面即可,


grep -srn "cannot_connect_camera_new"    //用此命令搜索

find -name "build.prop"|xargs rm -rf {};  搜索当前目录下的所有build.prop文件并删除

find -name "*.xml"|xargs grep -nrws "config_systemUIServiceComponents"

解释:*.xml  只查找.xml文件,n是显示行数 r是忽悠大小写,


代码搜索

搜索指令解释
cgrep所有C/C++文件执行搜索操作
jgrep所有Java文件执行搜索操作
ggrep所有Gradle文件执行搜索操作
mangrep [keyword]所有AndroidManifest.xml文件执行搜索操作
mgrep [keyword]所有Android.mk文件执行搜索操作
sepgrep [keyword]所有sepolicy文件执行搜索操作
resgrep [keyword]所有本地res/*.xml文件执行搜索操作
sgrep [keyword]所有资源文件执行搜索操作

上述指令用法最终实现方式都是基于grep指令,各个指令用法格式:
xgrep [keyword]  //x代表的是上表的搜索指令
例如,搜索所有AndroidManifest.xml文件中的launcher关键字所在文件的具体位置,指令
mangrep launcher
再如,搜索所有Java代码中包含zygote所在文件
jgrep zygote
又如,搜索所有system_app的selinux权限信息
sepgrep system_app
Tips: Android源码非常庞大,直接采用grep来搜索代码,不仅方法笨拙、浪费时间,而且搜索出很多无意义的混淆结果。根据具体需求,来选择合适的代码搜索指令,能节省代码搜索时间,提高搜索结果的精准度,方便定位目标代码。


在ubuntu中搜索文件一直是用的: find -name "*" |xargs grep “xxx",在用了一阵后感觉这命令还是太好,显示的搜索信息太多了,不匹配的搜索结果也显示在控件台中,百度了一下,可以用以下两个参数:

xxxx@ubuntu:~/project/MSM8916_R113502NEW/LINUX/android/packages$ find -name "*" |xargs grep -s "custom_content_page"
./apps/Launcher3/res/layout/custom_content_page_indicator_marker.xml:        android:src="@drawable/custom_content_page"
./apps/Launcher3/res/layout/custom_content_page_indicator_marker.xml:        android:src="@drawable/custom_content_page"


xxxx@ubuntu:~/project/MSM8916_R113502NEW/LINUX/android/packages$ find -name "*" |xargs grep -l "custom_content_page"
./apps/Launcher3/res/layout/custom_content_page_indicator_marker.xml

参数-s 与的-l的区别是 -s 会显示要搜索内容,而-l只会显示匹配搜索的文件名:

 

grep [options]

3.主要参数

[options]主要参数:

-c:只输出匹配行的计数。

-I:不区分大 小写(只适用于单字符)。

-h:查询多文件时不显示文件名。

-l:查询多文件时只输出包含匹配字符的文件名。

-n:显示匹配行及 行号。

-s:不显示不存在或无匹配文本的错误信息。

-v:显示不包含匹配文本的所有行。

 -w: 按单词搜索

 -r: 逐层遍历目录查找

如果想查找当前目录(/home/student)下的tmp.txt文件,但是想要避开sep目录:

 find /home/student -path /home/student/sep -prune -o -name "tmp.txt" -print

 sep后面不能加/ 即/home/student/sep/是错误的 如果当前目录为/home/student 也可以这样

 find . -path ./sep -prune -o -name "tmp.txt" -print

总结:-path 只是匹配find出来的路径,可以通过使用匹配符号* [] ?等 例如:

 

 [student@bioeng ~]$ find . -name file

./file

./dir/file

./dir/dir555/file

./dir/dir2/file

./dir/dir1/file

[student@bioeng ~]$

 

 [student@bioeng ~]$ find . -path "*dir[12]" -prune -o -name file -print

./file

./dir/file

./dir/dir555/file

 

 [student@bioeng ~]$ [student@bioeng ~]$ find . -path "*dir*" -prune -o -name file -print

./file

 [student@bioeng ~]$

如:搜索字符串“SystemUI”并排除out目录:

find . -path ./out -prune -o -type f -name "*.java" -print | xargs grep -swn "xxx"
find . -path ./out -prune -o -type f -print | xargs grep -swn "xxxx"   备注:w选项是精确查找

多关键字搜索:

find -name "*"|xargs grep  -e  'sim|Sim'

grep "ro.mtk_hdmi_support" -nrw device/
grep -swnr xxx .       //r代表递归查询   .表示当前目录
grep  --exclude-dir=kernel --exclude-dir=out -swnr xxx // 忽略kerner out两个目录搜索

查找到替换字符串:

find . -path ./out -prune -o -name "*.java" -print0 | xargs -0 perl -pi -e 's/xxxx/xxxxtihuan/g'  //替换将xxxx字符串搜索出来然后替换成:xxxxtihuan

其中find 命令的-print0选项一定要加,要不然会在替换的时候会提示文件打不开,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值