Java 通过Runtime.getRuntime().exec()执行find命令时出错
在从Java执行下面的命令时,我遇到了一个问题Java 通过Runtime.getRuntime().exec()执行find命令时出错,java,unix,Java,Unix,在从Java执行下面的命令时,我遇到了一个问题 Process p2 = Runtime.getRuntime().exec("find /home/app/reports/ATM.CCC.* -mtime +1000"); 我需要找到格式为ATM.CCC.且超过1000天的文件。 还需要删除超过100天的文件。我假设您希望将/home/app/reports/ATM.CCC.扩展为文件列表 这是行不通的,因为“globbing”是一个shell函数,而不是由execsyscall执行的核心系
Process p2 = Runtime.getRuntime().exec("find /home/app/reports/ATM.CCC.* -mtime +1000");
我需要找到格式为ATM.CCC.
且超过1000天的文件。
还需要删除超过100天的文件。我假设您希望将
/home/app/reports/ATM.CCC.
扩展为文件列表
这是行不通的,因为“globbing”是一个shell函数,而不是由exec
syscall执行的核心系统函数。。。或者Javaexec(…)
方法
您需要做的是在shell中运行命令;e、 g
.... exec(new String[]{
"sh", "-c",
"find /home/app/reports/ATM.CCC.* -mtime +1000"
});
请注意,您需要使用
exec
的重载来获取字符串数组。如果您试图使用重载,该重载接受字符串并将其拆分为参数。。。像这样
.... exec("sh -c \"find /home/app/reports/ATM.CCC.* -mtime +1000\"");
命令字符串将无法正确拆分。(exec拆分器不理解Unix/Linux shell样式的引用。)似乎与java无关。你的命令实际执行了吗?问题是什么?