我正在尝试从Java运行Unix find命令,但它给了我以下错误。 请在此建议正确的方法 -
java -cp automation.jar com.amex.scoring.dao.HiveDAO
/ bin / sh:find / axp / rim / nemo / dev / logs -type f -mtime -5 -exec ls {} \;:没有这样的文件或目录
Java代码
private static final String COMMAND = "find /axp/rim/nemo/dev/logs -type f -mtime -5 -exec ls {} \\;";
private static final String SHELL_NAME = "/bin/sh";
public static void main(String[] args) throws IOException {
final ProcessBuilder pb = new ProcessBuilder(SHELL_NAME,COMMAND);
pb.redirectErrorStream(true);
final Process process = pb.start();
final BufferedReader br = new BufferedReader(new InputStreamReader(process.getInputStream()));
String line;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
}
答案 0 :(得分:1)
看到它:
package com.raj.shell;
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class ExecuteShellComand {
public static void main(String[] args) {
ExecuteShellComand obj = new ExecuteShellComand();
String output = obj.executeCommand();
System.out.println(output);
}
private String executeCommand() {
StringBuffer output = new StringBuffer();
try {
Process p = Runtime.getRuntime().exec(new String[]{"/bin/sh", "-c", "cd && cat test.txt | grep Hello"});
p.waitFor();
BufferedReader reader
= new BufferedReader(new InputStreamReader(p.getInputStream()));
String line = "";
while ((line = reader.readLine()) != null) {
output.append(line + "\n");
}
} catch (Exception e) {
e.printStackTrace();
}
return output.toString();
}
}