发现这很棘手;拥有以下代码:
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。
答案 0 :(得分:1)
使用find
时,我总是逃避通配符:
cmd = "find /home/folder/ -type f -name somefile\\*";
答案 1 :(得分:0)
我认为如果您使用ProcessBuilder或Runtime.exec方法会更好,因为它们不需要shell转义并且不会通过shell运行。