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