gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 04:40:35 25 4
gpt4 key购买 nike

我在从 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 系统调用...或 Java exec(...) 执行的核心系统函数 方法。

您需要做的是在 shell 中运行该命令;例如

.... 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 - 通过 Runtime.getRuntime().exec() 执行 find 命令时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30237185/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com