2010-08-06 2 views
10

Ant를 사용하여 주어진 폴더의 모든 하위 폴더 내용을 복사하는 방법은 무엇입니까?Ant를 사용하여 하위 폴더 내용 복사

즉 내가 같은 폴더 구조를 가지고

folder/ 
folder/sub1/1.txt 
folder/sub1/f1/1.txt 
folder/sub2/2.txt 
... 

I 하위 폴더의 정확한 이름을 알고하지 않습니다. 그리고 모든 콘텐츠를 하나의 폴더에 복사해야합니다 (콘텐츠의 구조를 유지합니다. 즉, flatten을 사용하여 모든 파일을 하나의 디렉토리에 복사하는 것은 해결책이 아닙니다). 내가 얻을 필요가

newfolder/1.txt 
newfolder/1/1.txt 
newfolder/2.txt 
... 

그런 식으로 하위 집합을 그룹화 할 수 있습니까? **은 0 개 이상의 디렉토리를 의미하며 디렉토리 이름으로 *의 사용을 허용하지 않습니다. 즉 <fileset dir="${dir}/*/" />은 허용되지 않습니다. 사전에

감사합니다, Yury

답변

11
<copy toDir="newfolder"> 
    <fileset dir="folder"> 
    <include name="*/**"/> 
    <exclude name="*"/> 
    </fileset> 
    <regexpmapper from="^[^/]*/(.*)$$" to="\1" handledirsep="true"/> 
</copy> 

는 당신은 당신이 이제까지 Windows에서이 스크립트를 실행하려는 경우 handledirsep를 지정해야합니다.

+0

감사합니다. Alexander! 변형에서 flatten과 비슷한 동작을하기 때문에 regexp를 약간 변경했습니다. 그러나 regexpmapper를

+0

@ 유레입니다. 나는 충분히 깊은 계층 구조를 테스트하지 않은 것 같아요. 'to '매개 변수는 정말 간단하기 때문에 정규 표현식 그룹을 1 개 남겨두고 표현식의 시작 부분에서'[^ /] *'로 변경했습니다. –