blob: 6fb5cd7d9605cb98b89ed4541e2630b6df2f653c [file] [log] [blame]
Guido van Rossum41ffccb1993-04-01 20:50:35 +00001#! /usr/local/bin/python
Guido van Rossumec758ea1991-06-04 20:36:54 +00002
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:])