diff options
Diffstat (limited to 'lib/python2.7/Tools/scripts/findlinksto.py')
-rw-r--r-- | lib/python2.7/Tools/scripts/findlinksto.py | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/lib/python2.7/Tools/scripts/findlinksto.py b/lib/python2.7/Tools/scripts/findlinksto.py new file mode 100644 index 0000000..0641b15 --- /dev/null +++ b/lib/python2.7/Tools/scripts/findlinksto.py @@ -0,0 +1,43 @@ +#!/usr/bin/env python2 + +# findlinksto +# +# find symbolic links to a path matching a regular expression + +import os +import sys +import re +import getopt + +def main(): + try: + opts, args = getopt.getopt(sys.argv[1:], '') + if len(args) < 2: + raise getopt.GetoptError('not enough arguments', None) + except getopt.GetoptError, msg: + sys.stdout = sys.stderr + print msg + print 'usage: findlinksto pattern directory ...' + sys.exit(2) + pat, dirs = args[0], args[1:] + prog = re.compile(pat) + for dirname in dirs: + os.path.walk(dirname, visit, prog) + +def visit(prog, dirname, names): + if os.path.islink(dirname): + names[:] = [] + return + if os.path.ismount(dirname): + print 'descend into', dirname + for name in names: + name = os.path.join(dirname, name) + try: + linkto = os.readlink(name) + if prog.search(linkto) is not None: + print name, '->', linkto + except os.error: + pass + +if __name__ == '__main__': + main() |