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命令是否按照终端的预期工作?