+++ /dev/null
-#! /usr/bin/env python\r
-\r
-# findlinksto\r
-#\r
-# find symbolic links to a path matching a regular expression\r
-\r
-import os\r
-import sys\r
-import re\r
-import getopt\r
-\r
-def main():\r
- try:\r
- opts, args = getopt.getopt(sys.argv[1:], '')\r
- if len(args) < 2:\r
- raise getopt.GetoptError('not enough arguments', None)\r
- except getopt.GetoptError, msg:\r
- sys.stdout = sys.stderr\r
- print msg\r
- print 'usage: findlinksto pattern directory ...'\r
- sys.exit(2)\r
- pat, dirs = args[0], args[1:]\r
- prog = re.compile(pat)\r
- for dirname in dirs:\r
- os.path.walk(dirname, visit, prog)\r
-\r
-def visit(prog, dirname, names):\r
- if os.path.islink(dirname):\r
- names[:] = []\r
- return\r
- if os.path.ismount(dirname):\r
- print 'descend into', dirname\r
- for name in names:\r
- name = os.path.join(dirname, name)\r
- try:\r
- linkto = os.readlink(name)\r
- if prog.search(linkto) is not None:\r
- print name, '->', linkto\r
- except os.error:\r
- pass\r
-\r
-if __name__ == '__main__':\r
- main()\r