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