code: public static void walkPath(Path path,
                                FileSystem fs,
                                PathFilter filter,
                                PathVisitor visitor) throws IOException {
  
      FileStatus fileStatus = fs.getFileStatus(path);
  
      if (filter.accept(path)) {
        visitor.visit(fileStatus);
      }
  
      if (fileStatus.isDir()) {
        FileStatus[] children = fs.listStatus(path);
        for (FileStatus childStatus : children) {
          walkPath(childStatus.getPath(), fs, filter, visitor);
        }
      }
    }
docs: Recursively walk a path applying visitor to each path accepted by
  filter
  
  @param path root path to begin walking, will be visited if
  it passes the filter and directory flag
  @param fs FileSystem for this path
  @param filter filter to determine which paths to accept
  @param visitor visitor to apply to each accepted path
  @throws IOException