2010-08-06 41 views
10

Làm cách nào để sao chép nội dung của tất cả thư mục con của thư mục đã cho bằng Ant?Sao chép nội dung của các thư mục con bằng Ant

ví dụ: Tôi có cấu trúc thư mục như vậy

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

Tôi không biết tên chính xác của thư mục con. Và tôi cần sao chép nội dung từ tất cả chúng vào một thư mục (giữ cấu trúc nội dung, tức là sao chép tất cả các tệp vào một thư mục bằng cách sử dụng flatten không phải là giải pháp). Tôi cần nhận được

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

Tập tin có cho phép nhóm các thư mục con theo cách như vậy không? ** là viết tắt của số không hoặc nhiều thư mục và việc sử dụng * vì tên thư mục không được phép, tức là <fileset dir="${dir}/*/" /> không được chấp nhận.

Cảm ơn trước, Yury

Trả lời

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

Bạn chỉ cần xác định handledirsep nếu bạn đã bao giờ có ý định chạy kịch bản này trong Windows.

+0

Cảm ơn rất nhiều, Alexander! Tôi đã thay đổi regexp một chút, bởi vì trong biến thể của bạn nó hoạt động tương tự như san bằng. Nhưng sau khi thay đổi regexpmapper thành , Tôi có những gì tôi cần. Bạn có thể vui lòng sửa bản đồ trong câu trả lời của bạn không? –

+0

@Yury. Tôi đoán tôi đã không kiểm tra một hệ thống phân cấp đủ sâu. Bởi vì tham số 'to' thực sự đơn giản, tôi chỉ còn lại 1 nhóm regex, nhưng đã thay đổi thành' [^ /] * 'ở đầu biểu thức. –

Các vấn đề liên quan