web-dev-qa-db-ja.com

ファイルセットを1行に1つのファイル名でファイルに出力するにはどうすればよいですか?

入力済みのファイルセットがあり、一致するファイル名をテキストファイルに出力する必要があります。

私はこれを試しました:

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

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

すべてのファイルをセミコロンで区切って1行で出力します。 1行に1つのファイルが必要です。 OSコマンドの呼び出しやJavaコードの記述)に頼らずにこれを行うにはどうすればよいですか?

[〜#〜]更新[〜#〜]

ああ、もっと具体的だったはずです-リストにディレクトリが含まれていてはいけません。 pathconvert コマンドが正確に私が欠けていたものだったので、とにかく、私はChssPly76を受け入れられた回答としてマークしています。ディレクトリを取り除き、ファイル名のみをリストするために、私は "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>
43
Tomas Andrle

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>
67
ChssPly76

Ant 1.6以降は toString を使用できます:

<echo file="sounds.txt">${toString:myfileset}</echo>
3
R. Oosterholt