Java 코드를 통해 다음 명령을 실행하고 싶습니다. 아무도 내가 어떻게 그것을 실행할 수 제안 할 수 있습니까?Java 코드를 통해 명령을 실행하는 방법
find ./path/ | grep "키워드"| grep -rnw -e "keyword"
나는 여러 방면에서 노력하고 있지만 적절한 출력을 얻지 못하고 있습니다.
Java 코드를 통해 다음 명령을 실행하고 싶습니다. 아무도 내가 어떻게 그것을 실행할 수 제안 할 수 있습니까?Java 코드를 통해 명령을 실행하는 방법
find ./path/ | grep "키워드"| grep -rnw -e "keyword"
나는 여러 방면에서 노력하고 있지만 적절한 출력을 얻지 못하고 있습니다.
Runtime.getRuntime().exec()
여기에 친구가 있습니다. How to make pipes work with Runtime.exec()?
인쇄 응답이 더 나은 여기에 덮여에서 : 당신을 통해 파이프를 실행하려는처럼 java runtime.getruntime() getting output from executing a command line program
것 같다
녀석은 약간 다른 질문의 중복하지만 대부분이 하나 인 것을 옳다 자바 코드. 나는 쉘이나 bash를 사용하는 것이 가장 쉽다는 것을 발견했다. 가능한 경우 org.apache.commons.exec
패키지를 탐색 할 수도 있습니다. 여기
내가 어떻게 할 것입니다 :
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Test {
public static void main(String argv[]) {
try {
String[] cmd = {
"/bin/sh",
"-c",
"find ./path/ | grep \"keyword\" | grep -rnw -e \"keyword\""
};
Process exec = Runtime.getRuntime().exec(cmd);
BufferedReader stdInput = new BufferedReader(new InputStreamReader(exec.getInputStream()));
BufferedReader stdError = new BufferedReader(new InputStreamReader(exec.getErrorStream()));
System.out.println("Standard output:\n");
String s;
while ((s = stdInput.readLine()) != null) {
System.out.println(s);
}
System.out.println("Error output:\n");
while ((s = stdError.readLine()) != null) {
System.out.println(s);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
안녕하세요 Gralak, 귀중한 답변을 주셔서 감사합니다 !! 나는 또 다른 의심을 품는다. grep "somekey ="value ""/ path/fileName을 원했습니다. 명령 창에서/(grep "somekey = \"value \ ""/ path/fileName)을 사용하여 결과를 얻었습니다. 하지만 Java에서는 작동하지 않습니다. 해결책이 있습니까? –
우리는 그래서 우리는 그것을 잘못 무엇을 말할 수 없다 코드를 볼 수 없습니다. 이 예를 그물에서 발견하는 것이 어렵지 않아야합니다. – tripleee
여러분은 다른 질문의 사본이라고 말하지만 단 하나의 사본 만 지정하십시오. 사실 제가 말하고자하는 몇 가지 다른 질문의 조합입니다. 특히 여기에 표시된 원래 질문은 전혀 파이프에 대해 이야기하지 않습니다 ... 당신은 내 의견으로 중복으로 표시하기에는 너무 빠르다. –