web-dev-qa-db-fra.com

Comment imprimer un ensemble de fichiers dans un fichier, un nom de fichier par ligne?

J'ai un ensemble de fichiers rempli et j'ai besoin d'imprimer les noms de fichiers correspondants dans un fichier texte.

J'ai essayé ceci:

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

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

qui imprime tous les fichiers sur une seule ligne, séparés par des points-virgules. J'ai besoin d'un fichier par ligne. Comment puis-je faire cela sans recourir à des commandes du système d'exploitation ou à l'écriture de code Java?

[~ # ~] mise à jour [~ # ~] :

Ah, aurait dû être plus précis - la liste ne doit pas contenir de répertoires. Je marque ChssPly76 comme la réponse acceptée de toute façon, car la commande pathconvert était exactement ce qui me manquait. Pour supprimer les répertoires et répertorier uniquement les noms de fichiers, j'ai utilisé le "flatten" mapper .

Voici le script avec lequel je me suis retrouvé:

<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

Utilisez la tâche 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

Depuis Ant 1.6, vous pouvez utiliser toString :

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