Python递归遍历文件夹,寻找包含某个字符串的文本文件,python递归,linux下,如果不使用


linux下,如果不使用eclipse的话,想查找某个字符串在哪些文件中出现过就很麻烦,自己写了这个脚本在编码时使用,挺方便的。如果某个文本文件中包含的话,则只记录出现第一次的行数输出

使用方法:

python xxx.py 路径 字符串

python search_content.py /home/www/ abcdefg

#!/use/bin/env python#-*- coding:utf-8 -*-import sys,osfilterType = ['gif','png','bmp','jpg','jpeg','rar','zip',            'ico','apk','ipa','doc','docx','xls','jar',            'xlsx','ppt','pptx','pdf','gz','pyc','class']num = 0def search(path=None,cont=None):    if not path or not cont:        print('path or searchString is empty')        return    global num    _loopFolder(path,cont)    print("%s file find" % num)def _loopFolder(path,cont):    arr = path.split('/')    if not arr[-1].startswith('.'): #不检查隐藏文件夹        if os.path.isdir(path):            folderList = os.listdir(path)            for x in folderList:                _loopFolder(path+"/"+x,cont)        elif os.path.isfile(path):            _verifyContent(path,cont)def _verifyContent(path,cont):    if path.split('.')[-1].lower() in filterType:        return    global num    fh = open(path,'r')    fhContent = fh.readlines()    fh.close()    for index,x in enumerate(fhContent):        if cont in x:            num += 1            print("%s    %s" % (path,index+1))            break    returnif __name__ == "__main__":    if len(sys.argv) < 3:        print("invalid parameters")    else:        search(sys.argv[1],sys.argv[2])#该片段来自于http://byrx.net

评论关闭