import os
import glob
import re
from optparse import OptionParser
def process_parameters():
usage = "usage: %prog [options] search_reg_pattern"
parser = OptionParser(usage)
parser.add_option("-f", "--file", dest="file", default="*", help="file name to search, glob format")
parser.add_option("-d", "--dir", dest="dir", default="./", help="dir")
parser.add_option("-r", "--recursive", action="store_true", dest="recursive", default=False, help="recursive search directory, not support yet")
parser.add_option("-q", "--quiet", action="store_false", dest="verbose", default=True, help="print none information during process")
parser.add_option("-t", "--tofile", dest="tofile", default=None, help="output whole line in the file")
parser.add_option("-m", "--mfile", dest="mfile", default=None, help="output matched partial string to the file");
return parser;
def find_file_text(pattern, dir, file, recursive, verbose, tofile, mfile):
if tofile:
tofile_path = dir + os.sep + tofile
tofile_handle = open(tofile_path, 'w')
if mfile:
mfile_path = dir + os.sep + mfile;
mfile_handle = open(mfile_path, 'w')
match_count = 0;
glob_str = dir + os.sep + file
if verbose:
print "find ", pattern, "in ", glob_str
for filename in glob.glob(glob_str):
if not os.path.isdir(filename):
file_obj=open(filename,'rU')
line_no=0
for eachline in file_obj:
line_no=line_no+1
matched_list = re.findall(pattern, eachline, re.M|re.I)
if matched_list:
match_count = match_count + 1;
if tofile:
tofile_handle.write(eachline+'\n')
if mfile:
for matched in matched_list:
mfile_handle.write(matched + '\n')
if verbose:
print "[%d] %s(%d):%s"%(match_count, filename, line_no, eachline)
if tofile:
tofile_handle.close()
if __name__ == "__main__":
parser = process_parameters()
(options, args) = parser.parse_args()
if len(args) == 0:
parser.error("incorrect number of arguments")
print options, args
find_file_text(args[0], options.dir, options.file, options.recursive, options.verbose, options.tofile, options.mfile)
import glob
import re
from optparse import OptionParser
def process_parameters():
usage = "usage: %prog [options] search_reg_pattern"
parser = OptionParser(usage)
parser.add_option("-f", "--file", dest="file", default="*", help="file name to search, glob format")
parser.add_option("-d", "--dir", dest="dir", default="./", help="dir")
parser.add_option("-r", "--recursive", action="store_true", dest="recursive", default=False, help="recursive search directory, not support yet")
parser.add_option("-q", "--quiet", action="store_false", dest="verbose", default=True, help="print none information during process")
parser.add_option("-t", "--tofile", dest="tofile", default=None, help="output whole line in the file")
parser.add_option("-m", "--mfile", dest="mfile", default=None, help="output matched partial string to the file");
return parser;
def find_file_text(pattern, dir, file, recursive, verbose, tofile, mfile):
if tofile:
tofile_path = dir + os.sep + tofile
tofile_handle = open(tofile_path, 'w')
if mfile:
mfile_path = dir + os.sep + mfile;
mfile_handle = open(mfile_path, 'w')
match_count = 0;
glob_str = dir + os.sep + file
if verbose:
print "find ", pattern, "in ", glob_str
for filename in glob.glob(glob_str):
if not os.path.isdir(filename):
file_obj=open(filename,'rU')
line_no=0
for eachline in file_obj:
line_no=line_no+1
matched_list = re.findall(pattern, eachline, re.M|re.I)
if matched_list:
match_count = match_count + 1;
if tofile:
tofile_handle.write(eachline+'\n')
if mfile:
for matched in matched_list:
mfile_handle.write(matched + '\n')
if verbose:
print "[%d] %s(%d):%s"%(match_count, filename, line_no, eachline)
if tofile:
tofile_handle.close()
if __name__ == "__main__":
parser = process_parameters()
(options, args) = parser.parse_args()
if len(args) == 0:
parser.error("incorrect number of arguments")
print options, args
find_file_text(args[0], options.dir, options.file, options.recursive, options.verbose, options.tofile, options.mfile)