Java 通过Runtime.getRuntime().exec()执行find命令时出错

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执行的核心系

在从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函数,而不是由
exec
syscall执行的核心系统函数。。。或者Java
exec(…)
方法

您需要做的是在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无关。你的命令实际执行了吗?问题是什么?