public static List<File> find(File directory, String pattern) {
		pattern = wildcardsToRegExp(pattern);
		List<File> files = findFilesInDirectory(directory,
				Pattern.compile(pattern), true);
		List<File> result = new ArrayList<File>();
		for (File file : files) {
			String fileString = file.getPath().substring(
					directory.getPath().length());
			result.add(new File(fileString));
		}
		return result;
	}
public static List < File > find ( File directory , String pattern ) { pattern = wildcardsToRegExp ( pattern ) ; List < File > files = findFilesInDirectory ( directory , Pattern . compile ( pattern ) , true ) ; List < File > result = new ArrayList < File > ( ) ; for ( File file : files ) { String fileString = file . getPath ( ) . substring ( directory . getPath ( ) . length ( ) ) ; result . add ( new File ( fileString ) ) ; } return result ; }
This method searches a directory recursively. A pattern specifies which
files are to be put into the output list.

@param directory
is the directory where the recursive search is to be started.
@param pattern
is a Apache like pattern to specify the files which are to be
put into the output list.
@return