打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
find和grep的高级用法

find和grep的高级用法(一) 有时候需要在一个目录下的所有文件查找含有特定字符串的文件,及特定字符串在文件中的定位。 自然反应肯定是使用grep命令,加上-r参数。 1. grep -r pattern . grep -r pattern . 可是
find和grep的高级用法(一)        有时候需要在一个目录下的所有文件查找含有特定字符串的文件,及特定字符串在文件中的定位。
自然反应肯定是使用grep命令,加上-r参数。

1. grep -r "pattern" .

grep -r "pattern" .

可是如果待查找的目录是SVN目录,然后,主目录下面又有N多子目录,再用grep可就惨了,会查出好多.svn目录下含有该字符串的文件,而这些文件是创建SVN目录时由 tortoiseSVN自动创建的辅助目录。这些文件我们是不修改的。但是大量这样的文件会严重影响我们的修改速度。
grep有–exclude参数,

1. grep -r --exclude=.svn "pattern" .

grep -r --exclude=.svn "pattern" .

但是这只能排除掉主目录下边的.svn目录,对于子目录里的.svn就无能为力了。

这时候就该find命令上场了。先说一下find中对我们最有用的参数-prune
如果在查找文件时希望忽略某个目录,那么可以使用-prune选项来指出需要忽略的目录。

比如要在当前目录下查找不在.svn子目录之内的所有文件

1. find . -path "*/.svn" -prune -o -print

find . -path "*/.svn" -prune -o -print


1. -path "*/.svn" -prune -o -print

-path "*/.svn" -prune -o -print

是 -path “*/.svn” -a -prune -o -print 的简写表达式。
按顺序求值, -a 和 -o 都是短路求值,与 shell 的 && 和 || 类似。
如果 -path “*/.svn” 为真,则求值 -prune , -prune 返回真,与逻辑表达式为真;否则不求值 -prune,与逻辑表达式为假。
如果 -path “*/.svn” -a -prune 为假,则求值 -print ,-print返回真,或逻辑表达式为真;否则不求值 -print,或逻辑表达式为真。
这个表达式组合特例可以用伪码写为

1. if -path "*/.svn" then
2. -prune
3. else
4. -print

if -path "*/.svn" then
-prune
else
-print

如果需要避开多个文件夹,可以使用下面的命令:

1. find . /( -path dir1 -o -path file1 /) -prune -o -print

find . /( -path dir1 -o -path file1 /) -prune -o -print

圆括号表示表达式的结合。
/ 表示引用,即指示 shell 不对后面的字符作特殊解释,而留给 find 命令去解释其意义。
查找某一确定文件,-name等选项加在-o 之后

1. #find . /(-path dir1 -o -path file1 /) -prune -o -name "temp" -print

#find . /(-path dir1 -o -path file1 /) -prune -o -name "temp" -print

排除目录已经做到了, 下一步就是用grep去搜索特定串了.结合xargs使用即可.

1. find . -path "*/.svn" -prune -o -print|xargs grep "CodeType" -n

 

本文来自联城技术网(http://tech.16c.cn/)转发请保留地址:http://tech.16c.cn/svnsy/20101008/56844.html

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Linux 的查找Find和强大的Find.
find使用详解
find 命令的参数详解
对find参数-prune的理解
Linux文件查找命令find,xargs详述[2]
Linux find运行机制详解
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服