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]所有l⽂件执⾏搜索操作
mgrep [keyword]所有Android.mk⽂件执⾏搜索操作
sepgrep [keyword]所有sepolicy⽂件执⾏搜索操作
resgrep [keyword]所有本地res/*.xml⽂件执⾏搜索操作
sgrep [keyword]所有资源⽂件执⾏搜索操作
上述指令⽤法最终实现⽅式都是基于grep指令,各个指令⽤法格式:
xgrep [keyword] //x代表的是上表的搜索指令
例如,搜索所有l⽂件中的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_l:
android:src="@drawable/custom_content_page"
./apps/Launcher3/res/layout/custom_content_page_l:
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_l
参数-s 与的-l的区别是 -s 会显⽰要搜索内容,⽽-l只会显⽰匹配搜索的⽂件名:
grep [options]
3.主要参数
[options]主要参数:
-c:只输出匹配⾏的计数。
-I:不区分⼤ ⼩写(只适⽤于单字符)。
-h:查询多⽂件时不显⽰⽂件名。
-l:查询多⽂件时只输出包含匹配字符的⽂件名。
-n:显⽰匹配⾏及 ⾏号。
-s:不显⽰不存在或⽆匹配⽂本的错误信息。
-v:显⽰不包含匹配⽂本的所有⾏。
-w: 按单词搜索
-r: 逐层遍历⽬录查
如果想查当前⽬录(/home/student)下的⽂件,但是想要避开sep⽬录:
find /home/student -path /home/student/sep -prune -o -name "" -print
sep后⾯不能加/ 即/home/student/sep/是错误的 如果当前⽬录为/home/student 也可以这样
find . -path ./sep -prune -o -name "" -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'
1. grep "ro.mtk_hdmi_support" -nrw device/
2. grep -swnr xxx . //r代表递归查询 .表⽰当前⽬录
find查命令的使用3. 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选项⼀定要加,要不然会在替换的时候会提⽰⽂件打不开,
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论