Прекратить расширение символов подстановки в аргументах командной строки для Java

Моя программа должна искать файлы, которые соответствуют маске. Имя папки и маска передаются через аргументы командной строки. Но маска заменяется первым совпадением, прежде чем я смогу ее использовать!

Двойные кавычки не действуют и другие символы тоже. Я пытался с помощью\ или же' защитить вход. Однако тогда этот символ будет добавлен к аргументам, которые я не хочу. Есть идеи как это исправить?

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

Регулярное выражение отargs[2] также заменен некоторым файлом из папки.

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

Я понимаю, что использование цитаты или обратной косой черты не такая уж плохая идея, но я думаю, что существует лучший способ.

Ответы на вопрос(1)

Ваш ответ на вопрос