Deje de expandir símbolos comodín en argumentos de línea de comandos a Java

Mi programa tiene que buscar archivos que coincidan con una máscara. El nombre de la carpeta y la máscara se pasan a través de argumentos de línea de comando. ¡Pero la máscara se reemplaza por el primer partido antes de que pueda usarla!

Las comillas dobles no tienen efecto y otros símbolos también. Traté de usar\ o' para proteger la entrada. Sin embargo, este símbolo se agregará a los argumentos, que no quiero. ¿Alguna idea de cómo solucionarlo?

public static void main(String[] args) throws IOException {
    File dir = new File(args[0]);
    String mask = args[1];
    System.out.println(dir.getAbsolutePath());
    System.out.println(mask);
    String regex = args[2];
    System.out.println(regex);
}

Expresión regular deargs[2] También reemplazado con algún archivo de la carpeta.

Input: "E:\Programming\Java\Task7" *.??? ...
Ouput: E:\Programming\Java\Task7 .git Task7.iml

Input: "E:\Programming\Java\Task7" *.????* [a-zA-Z]
Output: E:\Programming\Java\Task7 .idea [a-zA-Z]

Input: "E:\Programming\Java\Task7" '.???' ...
Output: E:\Programming\Java\Task7 '.???' ...

Input: "E:\Programming\Java\Task7" \\'.???'\\ ...
Output: E:\Programming\Java\Task7 \'.???'\ ...

Entiendo que usar comillas o barras invertidas no es una mala idea, pero creo que existe una mejor manera.

Respuestas a la pregunta(1)

Su respuesta a la pregunta