2010-08-06 64 views
10

如何使用Ant複製給定文件夾的所有子文件夾的內容?使用Ant複製子文件夾的內容

即我有這樣的文件夾結構

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

我不知道子文件夾的確切名稱。我需要將所有文件中的內容複製到一個文件夾中(保留內容結構,即將所有文件複製到一個dir中使用拼合不是解決方案)。我需要得到

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

fileset是否允許以這種方式對子文件夾進行分組? **代表零個或多個目錄,不允許使用*作爲目錄名稱,即<fileset dir="${dir}/*/" />是不可接受的。

由於提前,尤里·

回答

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

你只需要指定handledirsep如果你打算在Windows中運行該腳本。

+0

非常感謝,亞歷山大! 我已經改變了一點正則表達式,因爲在你的變體中,它的作用類似於扁平化。但是在將regexpmapper從=「^([^ /] *)/(。*)$$」更改爲=「\ 2」handledirsep =「true」/>後,我得到了我所需要的內容。 您能否在您的答案中正確使用映射器? – 2010-08-09 12:57:21

+0

@Yury。我想我沒有測試足夠深的層次結構。因爲'to'參數非常簡單,所以我只剩下1個正則表達式組,但在表達式的開始處更改爲'[^ /] *'。 – 2010-08-10 15:54:56

相關問題