| import fnmatch | 
 | import os | 
 |  | 
 | _debug = 0 | 
 |  | 
 | _prune = ['(*)'] | 
 |  | 
 | def find(pattern, dir = os.curdir): | 
 | 	list = [] | 
 | 	names = os.listdir(dir) | 
 | 	names.sort() | 
 | 	for name in names: | 
 | 		if name in (os.curdir, os.pardir): | 
 | 			continue | 
 | 		fullname = os.path.join(dir, name) | 
 | 		if fnmatch.fnmatch(name, pattern): | 
 | 			list.append(fullname) | 
 | 		if os.path.isdir(fullname) and not os.path.islink(fullname): | 
 | 			for p in _prune: | 
 | 				if fnmatch.fnmatch(name, p): | 
 | 					if _debug: print "skip", `fullname` | 
 | 					break | 
 | 			else: | 
 | 				if _debug: print "descend into", `fullname` | 
 | 				list = list + find(pattern, fullname) | 
 | 	return list |