public static String findFile(File root, String name)
			throws PatternSyntaxException {
		Pattern p = Pattern.compile(name, Pattern.CASE_INSENSITIVE);
		Deque<Filer> next = new ArrayDeque<Filer>();
		for (File f : root.listFiles()) {
			if (p.matcher(f.getName()).matches())
				return f.getName() + (f.isDirectory() ? "/" : "");
			if (f.isDirectory())
				next.addLast(new Filer(f, f.getName() + "/"));
		}
		while (!next.isEmpty()) {
			Filer fr = next.removeFirst();
			for (File f : fr.f.listFiles()) {
				if (p.matcher(f.getName()).matches())
					return fr.n + f.getName() + (f.isDirectory() ? "/" : "");
				if (f.isDirectory())
					next.addLast(new Filer(f, fr.n + f.getName() + "/"));
			}
		}
		return null;
	}