#!/usr/bin/env python #--------------------------------------------------------------------# # The script # # (1) does a recursive search of directories, # # (2) looks for a word in all the files (with a given suffix) and # # (3) replaces it with another word. # #--------------------------------------------------------------------# import re import os import sys import time from fileinput import input #----------------------------------------- # Function to search and replace in a file #----------------------------------------- def searchReplaceFile(fileName, oldWord, newWord): data = open(fileName).read() open(fileName,"w").write( re.sub(oldWord,newWord,data) ) def process(filename, oldWord, newWord, ext): if os.path.isdir(filename): return processdir(filename, oldWord, newWord, ext) else: if os.path.normcase(filename).endswith(ext): try: searchReplaceFile (filename, oldWord, newWord) except IOError, msg: sys.stderr.write("Can't open: %s\n" % msg) return 1 def processdir(dir, oldWord, newWord, ext): try: names = os.listdir(dir) except os.error, msg: sys.stderr.write("Can't list directory: %s\n" % dir) return 1 files = [] for name in names: fn = os.path.join(dir, name) process(fn, oldWord, newWord, ext) def usage(msg): sys.stderr.write("Usage:\n") sys.stderr.write(" %s %s\n" % (sys.argv[0], msg)) #sys.stderr.write("Try '%s -h' for more information.\n" % sys.argv[0]) n = len(sys.argv[1:]) if (n < 3): usage('fileSuffix oldWord newWord') sys.exit(1) EXEC_DIR = os.getcwd() print EXEC_DIR ext = sys.argv[1] oldWord = str(sys.argv[2]) newWord = str(sys.argv[3]) process(EXEC_DIR, oldWord, newWord, ext)