home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / pyth_os2.zip / python-1.0.2 / Demo / scripts / findlinksto.py < prev    next >
Text File  |  1994-01-21  |  872b  |  43 lines

  1. #! /usr/local/bin/python
  2.  
  3. # findlinksto
  4. #
  5. # find symbolic links to a path matching a regular expression
  6.  
  7. import os
  8. import sys
  9. import regex
  10. import getopt
  11.  
  12. def main():
  13.     try:
  14.         opts, args = getopt.getopt(sys.argv[1:], '')
  15.         if len(args) < 2:
  16.             raise getopt.error, 'not enough arguments'
  17.     except getopt.error, 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 = regex.compile(pat)
  24.     for dirname in dirs:
  25.         os.path.walk(dirname, visit, prog)
  26.  
  27. def 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) >= 0:
  38.                 print name, '->', linkto
  39.         except os.error:
  40.             pass
  41.  
  42. main()
  43.