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*\";
,则输入流将为空。 现在,我认为这与交互式外壳程序完成的字符串扩展有关(我想在这种情况下不会使用)。在这种情况下,
*
将没有任何意义,ѭ2be将寻找真正名为\“ * \”的文件(类似于
\\*
)。因此,我尝试将命令设为
sh -c \"find /home/folder/ -type f -name somefile*\"
。但这也不起作用... 我想念什么? 谢谢, F。 附言:这是一个AIX框,带有IBM的Java JVM。     
已邀请:
使用
find
时,我总是转义通配符:
cmd = \"find /home/folder/ -type f -name somefile\\\\*\";
    
我认为如果使用ProcessBuilder或Runtime.exec方法会更好,因为它们不需要外壳转义并且不需要通过外壳运行。 ProcessBuilder,加载更加灵活 Runtime.exec,不同于仅接受字符串的形式     

要回复问题请先登录注册