1cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)# Copyright 2014 The Chromium Authors. All rights reserved. 2cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)# Use of this source code is governed by a BSD-style license that can be 3cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)# found in the LICENSE file. 4cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 55f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)import fnmatch 6cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)from os import walk 7cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)from os.path import join 8cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)import sys 9cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 10cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 11cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)def FindFiles(top, pattern, **kwargs): 12cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) """Finds files under |top| matching the glob pattern |pattern|, returning a 13cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) list of paths.""" 14cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) matches = [] 15cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) for dirpath, _, filenames in walk(top, **kwargs): 165f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) for filename in fnmatch.filter(filenames, pattern): 17cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) matches.append(join(dirpath, filename)) 18cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) return matches 19cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 20cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 21cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)def main(argv): 22cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) if len(argv) != 3: 23cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) print "usage: %s path pattern" % argv[0] 24cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) return 1 25cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 26cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) for filename in FindFiles(argv[1], argv[2]): 27cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) print filename 28cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) return 0 29cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 30cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 31cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)if __name__ == '__main__': 32cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) sys.exit(main(sys.argv)) 33