python小脚本-find
#!/usr/bin/python#ecoding=utf-8'''搜索某种文件内含有某关键字的文件名和文件行由于使用了python2.2,没有os.walk函数,自己写了使用命令模式'''import os,refilenamerep='.*jsp$'#文件匹配模式path='/usr/local/tomcat/webapps/ROOT'#搜索路径,路径为绝对路径contentrep=r'\bStatement\b'#每行文件要搜索的内容result={}#匹配的结果数据存在map中,以文件的绝对路径名为key,vlaue为list,匹配的行数和内容为元祖的list,logfile='searchresult.log'def ismatch(path): global filenamerep if re.search(filenamerep, path): return True else: return False#版本太低,不能使用enumeratedef handlefile(path): '''对文件的每行进行处理''' global result num=0 for line in open(path,'r'): num=num+1 if re.search(contentrep, line): if not result.get(path):#初始化列表 result[path]=[] result[path].append((num,line))def findfile(dir): '''找出符合规则的结果''' for i in os.listdir(dir): i=os.path.join(dir,i)#绝对路径 if os.path.isfile(i): if ismatch(i): handlefile(i) if os.path.isdir(i): findfile(i)def log(): '''记录日志''' global logfile log=open(logfile,'w') for key in result.keys(): li=result[key] log.write("文件:"+key+os.linesep) for i in li: log.write(' 第'+str(i[0])+'行 '+i[1]+os.linesep)if __name__=='__main__': if os.name=='nt': print '在windows下,请注意路径转义' findfile(path) log() else: findfile(path) log()?
?
1 楼 cloverprince 2011-07-17 是“grep -r -n”吧 2 楼 qiuboboy 2011-07-18 cloverprince 写道是“grep -r -n”吧