~ubuntu-branches/ubuntu/maverick/python3.1/maverick

« back to all changes in this revision

Viewing changes to Tools/scripts/findlinksto.py

  • Committer: Bazaar Package Importer
  • Author(s): Matthias Klose
  • Date: 2009-03-23 00:01:27 UTC
  • Revision ID: james.westby@ubuntu.com-20090323000127-5fstfxju4ufrhthq
Tags: upstream-3.1~a1+20090322
ImportĀ upstreamĀ versionĀ 3.1~a1+20090322

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#! /usr/bin/env 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 re
 
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.GetoptError('not enough arguments', None)
 
17
    except getopt.GetoptError as 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 = re.compile(pat)
 
24
    for dirname in dirs:
 
25
        os.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) is not None:
 
38
                print(name, '->', linkto)
 
39
        except os.error:
 
40
            pass
 
41
 
 
42
if __name__ == '__main__':
 
43
    main()