Pare de expandir símbolos curinga nos argumentos da linha de comandos para Java

Meu programa precisa observar os arquivos que correspondem a uma máscara. O nome da pasta e a máscara são passados pelos argumentos da linha de comando. Mas a máscara é substituída pela primeira partida antes que eu possa usá-la!

As aspas duplas não têm efeito e outros símbolos também. Eu tentei usar\ ou' para proteger a entrada. No entanto, esse símbolo será adicionado aos argumentos, o que eu não quero. Alguma idéia de como consertar isso?

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);
}

Expressão regular deargs[2] também substituído por algum arquivo da pasta

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 \'.???'\ ...

Entendo que usar aspas ou barra invertida não é uma má ideia, mas acho que existe uma maneira melhor.

questionAnswers(1)

yourAnswerToTheQuestion