我怎么能用星号getRuntime()。exec?

时间:2010-01-09 13:28:41

标签: java shell

这不起作用,

Runtime.getRuntime().exec("stat /*");

也不是;

Runtime.getRuntime().exec(new String[] {"stat", "/*"})

周围有什么办法吗?

谢谢,

3 个答案:

答案 0 :(得分:8)

星号由shell扩展(这称为 globbing )。所以你实际上想要执行/bin/sh可执行文件(最有可能的是 - 如果需要,在这里替换另一个shell),并从中调用stat /*。例如执行:

/bin/sh -c "stat /*"
来自Java进程的

-c指定/ bin / sh执行-c之后的字符串中的任何内容。

或者,您可以通过在Java中查找根目录中的所有文件来自行执行/*扩展,然后将这些文件作为参数传递给stat

答案 1 :(得分:1)

您可以将任务委托给shell,就像Brian Agnew所说,或者使用Java列出/(通过Apache IO中的所有文件和目录),并将/*替换为正确的清单。

答案 2 :(得分:0)

这些答案没有用,所以我创建了一个我写的shell文件;

stat $1*

所以每当我需要添加星号时,我都会在没有它的情况下调用此文件,

Runtime.getRuntime().exec("/my_shell_file /miki/");

它为我添加了星号,并在运行时向我提供了我需要的输出:

stat /miki/*

干杯,