java如何执行终端命令?

java如何执行终端命令?,java,unix,runtime,Java,Unix,Runtime,发现这很棘手;具有以下代码: String cmd = "find /home/folder/ -type f"; Runtime run = Runtime.getRuntime() ; Process pr = run.exec(cmd); pr.waitFor(); 我将pr.getInputStream()并在那里找到正确的结果,没有问题。但是,如果我想更具体一点,并将命令设置为cmd=“find/home/folder/-type f-name somefile*”,输入流将为

发现这很棘手;具有以下代码:

String cmd = "find /home/folder/ -type f"; 
Runtime run = Runtime.getRuntime() ; 
Process pr = run.exec(cmd); 
pr.waitFor();
我将
pr.getInputStream()
并在那里找到正确的
结果,没有问题。但是,如果我想更具体一点,并将命令设置为
cmd=“find/home/folder/-type f-name somefile*”,输入流将为空

现在,我认为它与交互式shell所做的字符串扩展有关(我想在本例中不会使用)。在这种情况下,
*
将没有意义,
查找
将查找真正名为“*”的文件(类似于
\*
)。因此,我尝试将命令设置为
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方法,因为它们不需要shell转义,也不需要在shell中运行

  • ,负载是否更灵活
  • ,不同于仅接受字符串的形式

find命令是否按照终端的预期工作?