code: def find_files(paths, file_predicate):
      
      file_list = []
      for path in paths:
          p = abs_path(path)
          for dirPath, _, fileList in os.walk(p):
              for fname in fileList:
                  name, ext = os.path.splitext(fname)
                  if file_predicate(name, ext):
                      file_list.append((dirPath, name, ext))
      return file_list
docs: Locate files whose names and extensions match the given predicate in
      the specified directories.
  
      Args:
          paths: A list of directory paths where to find the files.
          file_predicate: A function that returns True if the file name and
              extension are desired.
  
      Returns:
          A list of files that match the predicate.