Commit | Line | Data |
---|---|---|
920dae64 AT |
1 | import fnmatch |
2 | import os | |
3 | ||
4 | _debug = 0 | |
5 | ||
6 | _prune = ['(*)'] | |
7 | ||
8 | def find(pattern, dir = os.curdir): | |
9 | list = [] | |
10 | names = os.listdir(dir) | |
11 | names.sort() | |
12 | for name in names: | |
13 | if name in (os.curdir, os.pardir): | |
14 | continue | |
15 | fullname = os.path.join(dir, name) | |
16 | if fnmatch.fnmatch(name, pattern): | |
17 | list.append(fullname) | |
18 | if os.path.isdir(fullname) and not os.path.islink(fullname): | |
19 | for p in _prune: | |
20 | if fnmatch.fnmatch(name, p): | |
21 | if _debug: print "skip", `fullname` | |
22 | break | |
23 | else: | |
24 | if _debug: print "descend into", `fullname` | |
25 | list = list + find(pattern, fullname) | |
26 | return list |