PageRenderTime 323ms CodeModel.GetById 171ms app.highlight 4ms RepoModel.GetById 147ms app.codeStats 0ms

/Tools/scripts/findlinksto.py

http://unladen-swallow.googlecode.com/
Python | 43 lines | 36 code | 3 blank | 4 comment | 0 complexity | a6277144931bfcf8b6332c5fc80990b8 MD5 | raw file
 1#! /usr/bin/env python
 2
 3# findlinksto
 4#
 5# find symbolic links to a path matching a regular expression
 6
 7import os
 8import sys
 9import re
10import getopt
11
12def main():
13    try:
14        opts, args = getopt.getopt(sys.argv[1:], '')
15        if len(args) < 2:
16            raise getopt.GetoptError('not enough arguments', None)
17    except getopt.GetoptError, msg:
18        sys.stdout = sys.stderr
19        print msg
20        print 'usage: findlinksto pattern directory ...'
21        sys.exit(2)
22    pat, dirs = args[0], args[1:]
23    prog = re.compile(pat)
24    for dirname in dirs:
25        os.path.walk(dirname, visit, prog)
26
27def visit(prog, dirname, names):
28    if os.path.islink(dirname):
29        names[:] = []
30        return
31    if os.path.ismount(dirname):
32        print 'descend into', dirname
33    for name in names:
34        name = os.path.join(dirname, name)
35        try:
36            linkto = os.readlink(name)
37            if prog.search(linkto) is not None:
38                print name, '->', linkto
39        except os.error:
40            pass
41
42if __name__ == '__main__':
43    main()