2016-10-17 5 views
-1

"ls * .xml"을 호출하는 프로세스를 생성하려고합니다.Java 프로세스 생성

이 코드는 확인 작동합니다

Process p=Runtime.getRuntime().exec("ls build.xml"); 
build.xml 

이 코드는 잘못된 것입니다 :

Process p=Runtime.getRuntime().exec("ls *.xml"); 
// this is the output 
Cannot run program "ls *.xml": error=2, No such file or directory 

어떤 생각?

+1

:. 당신이 원하는 모든 목록 파일 인 경우

는 Files.newDirectoryStream()를 사용 간부 ({ "LS"를'Runtime.getRuntime을, "* .xml"})); –

+0

[경로의 물결표가있는 bash 스크립트 실행 중] 가능한 중복 (http://stackoverflow.com/questions/15273524/executing-bash-script-with-tilde-in-path) –

+1

참고 : exec를 실행하면'*'와'>와 같은 것을 이해할 수있는 셸을 실행하지 않습니다. –

답변

1

이는 와일드 카드 확장이 ls 명령이 아니라 Bash 쉘에 의해 수행되기 때문입니다.

당신이 간부의 배열 형태로 사용하는 경우 발생하는
Files.newDirectoryStream(Paths.get(".")), p -> p.toString().endsWith(".xml")).forEach(System.out::println)