blob: 709e4dc63dc96106b55a043142a54acd71f588d4 [file] [log] [blame]
Guido van Rossumec758ea1991-06-04 20:36:54 +00001#! /usr/local/python
2
3# findlinksto
4#
5# find symbolic links to a given path
6
Guido van Rossum391b8b71992-03-30 11:14:36 +00007import os, sys
Guido van Rossumec758ea1991-06-04 20:36:54 +00008
9def visit(pattern, dirname, names):
Guido van Rossum391b8b71992-03-30 11:14:36 +000010 if os.path.islink(dirname):
Guido van Rossumec758ea1991-06-04 20:36:54 +000011 names[:] = []
12 return
Guido van Rossum391b8b71992-03-30 11:14:36 +000013 if os.path.ismount(dirname):
Guido van Rossumec758ea1991-06-04 20:36:54 +000014 print 'descend into', dirname
15 n = len(pattern)
16 for name in names:
Guido van Rossum391b8b71992-03-30 11:14:36 +000017 name = os.path.join(dirname, name)
Guido van Rossumec758ea1991-06-04 20:36:54 +000018 try:
Guido van Rossum391b8b71992-03-30 11:14:36 +000019 linkto = os.readlink(name)
Guido van Rossumbdfcfcc1992-01-01 19:35:13 +000020 if linkto[:n] == pattern:
Guido van Rossumec758ea1991-06-04 20:36:54 +000021 print name, '->', linkto
Guido van Rossum391b8b71992-03-30 11:14:36 +000022 except os.error:
Guido van Rossumec758ea1991-06-04 20:36:54 +000023 pass
24
25def main(pattern, args):
26 for dirname in args:
Guido van Rossum391b8b71992-03-30 11:14:36 +000027 os.path.walk(dirname, visit, pattern)
Guido van Rossumec758ea1991-06-04 20:36:54 +000028
29main(sys.argv[1], sys.argv[2:])