import os.path,sys,re,string reverse_map = {} filenames = [] reverse_map2 = {} filenames2 = [] matcher = re.compile("\..*") def foreachimage(arg, dirname, names): #print dirname, ":" global filenames for n in names[:]: # don't touch dot files if matcher.match(n): names.remove(n) kill_list = ['CVS', 'README', 'dev', 'unused', 'obsolete', 'retired'] for i in kill_list: try: names.remove(i) except: pass #print names for n in names: fname = os.path.join(dirname,n) #print "'%s'" % fname if os.path.isfile(fname) and re.match(".*\.png", fname): global reverse_map #if(reverse_map.has_key(n)): #print "duplicate: ", fname reverse_map[n] = dirname #print "\t", fname filenames.append(n) os.path.walk(sys.argv[1], foreachimage, "") def foreachotherimage(arg, dirname, names2): #print dirname, ":" global filenames2 for n in names2[:]: # don't touch dot files if matcher.match(n): names2.remove(n) kill_list = ['CVS', 'README', 'dev', 'unused', 'obsolete', 'retired'] for i in kill_list: try: names2.remove(i) except: pass #print names2 for n in names2: fname = os.path.join(dirname,n) #print "'%s'" % fname if os.path.isfile(fname) and re.match(".*\.png", fname): global reverse_map2 #if(reverse_map2.has_key(n)): #print "duplicate: ", fname reverse_map2[n] = dirname filenames2.append(n) #print "\t", fname os.path.walk(sys.argv[2], foreachotherimage, "") for n in filenames: if(reverse_map2.has_key(n)): newname = re.match("(^.*\.)(.*\.)(png)", n) if not newname: print "error: n doesn't match" if newname: #print newname.group(1) #print newname.group(0) newname = newname.group(1) + sys.argv[3] + "." + newname.group(2) + newname.group(3) #print newname #newname = n[:-8] #newname = newname +sys.argv[3]+n[-8:-4]+".png" command = "mv %s %s" % (os.path.join(reverse_map2[n], n) , os.path.join(reverse_map[n], newname)) print command #os.system(command)