java Runtime.getRunTime().exec & wildcards?

2022-09-04 06:18:50

我正在尝试通过使用删除垃圾文件

Process p = Runtime.getRuntime().exec();

只要我不使用通配符,它就可以正常工作,即这有效:

Process p = Runtime.getRuntime().exec("/bin/rm -f specificJunkFile.java");

而以下内容会抛回“没有这样的文件或目录”:

Process p = Runtime.getRuntime().exec("/bin/rm -f *.java");

我应该能够做这里概述的所有好事,对吧?


答案 1

经过大量的搜索,我发现了这个:http://www.coderanch.com/t/423573/java/java/Passing-wilcard-Runtime-exec-command

Runtime.exec(new String[] { "sh", "-c", "rm /tmp/ABC*" });

答案 2

这些是Bash通配符。它们在 Bash shell 中被解释。您直接运行 rm,因此没有 shell 可以将 解释为“所有文件”。*

您可以使用 bash 作为命令。例如:

Runtime.getRuntime().exec("/path-to/bash -c \"rm *.foo\"")


推荐