2009-09-21 57 views
42

我有一個填充文件集,我需要將匹配的文件名打印到文本文件中。如何將文件集打印到文件,每行一個文件名?

我嘗試這樣做:

<fileset id="myfileset" dir="../sounds"> 
    <include name="*.wav" /> 
    <include name="*.ogg" /> 
</fileset> 

<property name="sounds" refid="myfileset" /> 
<echo file="sounds.txt">${sounds}</echo> 

它打印在一行中的所有文件,用分號隔開。我需要每行有一個文件。我怎樣才能做到這一點,而不訴諸操作系統命令或編寫Java代碼?

UPDATE

啊,本來應該更具體的 - 名單不得包含目錄。無論如何,我將ChssPly76's標記爲公認的答案,因爲pathconvert命令正是我所缺少的。要剝離目錄並僅列出文件名,我使用了"flatten" mapper

這裏是我結束了劇本:

<fileset id="sounds_fileset" dir="../sound"> 
    <include name="*.wav" /> 
    <include name="*.ogg" /> 
</fileset> 

<pathconvert pathsep="&#xA;" property="sounds" refid="sounds_fileset"> 
    <mapper type="flatten" /> 
</pathconvert> 

<echo file="sounds.txt">${sounds}</echo> 

回答

65

使用PathConvert任務:

<fileset id="myfileset" dir="../sounds"> 
    <include name="*.wav" /> 
    <include name="*.ogg" /> 
</fileset> 

<pathconvert pathsep="${line.separator}" property="sounds" refid="myfileset"> 
    <!-- Add this if you want the path stripped --> 
    <mapper> 
     <flattenmapper /> 
    </mapper> 
</pathconvert> 
<echo file="sounds.txt">${sounds}</echo> 
+0

的Pathconvert任務似乎創建了絕對文件路徑。有沒有可能防止這種情況發生?我有同樣的問題,並希望打印一個文件的列表,但不是完整的路徑,但相對路徑(所以扁平化將不適用於我) – Soccertrash 2012-07-31 10:41:37

+1

@Soccertrash,我解決了這個後處理文件與<替換文件=「$ {sounds.txt}」token =「$ {basedir} \」value =「」/>'刪除公共基地目錄前綴(在我的情況下)。 – mgaert 2013-01-24 12:04:45

+3

@mgaert,你可以把它作爲''放在''。 – 2013-11-26 12:42:22

0

由於螞蟻1.6,你可以使用toString

<echo file="sounds.txt">${toString:myfileset}</echo> 
相關問題