java如何执行终端命令?
问题描述:
发现这很棘手;具有下列代码:java如何执行终端命令?
String cmd = "find /home/folder/ -type f";
Runtime run = Runtime.getRuntime() ;
Process pr = run.exec(cmd);
pr.waitFor();
我会pr.getInputStream()
并有适当的find
结果那里,没有问题。但是,如果我想要更具体一点,并且我的命令为cmd = "find /home/folder/ -type f -name somefile*";
,则输入流将为空。
现在,我认为这将是与交互式shell所做的字符串扩展有关的东西(在这种情况下,我不会使用它)。在这种情况下,*
将没有意义,find
将寻找名为“*”的文件(如\*
)。所以我试图让我的命令为sh -c "find /home/folder/ -type f -name somefile*"
。但它也没有工作...
我错过了什么?
谢谢,
f。
Ps .:这是一个AIX机箱,带有IBM的Java JVM。使用find
当
答
我总是逃避通配符:
cmd = "find /home/folder/ -type f -name somefile\\*";
答
我认为这将是更好,如果你使用的ProcessBuilder或可能的Runtime.exec方法,因为它们不需要外壳逃避,不通过运行贝壳。
- ProcessBuilder,是负载更灵活
- Runtime.exec,从只需要一个字符串形式的不同
是否如期望从终端find命令的工作? – 2011-05-26 10:09:39
是的,它确实.... – filippo 2011-05-26 11:09:31