web-dev-qa-db-fra.com

Comment utiliser les modèles de dénomination Nant / Ant?

Je dois admettre que j'ai toujours oublié les subtilités syntaxiques des modèles de nommage pour Nant (par exemple, ceux utilisés dans les ensembles de fichiers). Le truc astérisque double/astérisque simple semble être très oubliable dans mon esprit.

Quelqu'un peut-il fournir un guide définitif sur les modèles de dénomination?

89
berko

Les règles sont les suivantes:

  • une seule étoile (*) correspond à zéro ou plusieurs caractères dans un nom de chemin
  • une double étoile (**) correspond à zéro ou plusieurs caractères à tous les niveaux du répertoire
  • un point d'interrogation (?) correspond exactement à un caractère dans un nom de chemin

Une autre façon de penser est que la double étoile (**) correspond à la barre oblique (/) mais pas la simple étoile (*).

Disons que vous avez les fichiers:

  1. bar.txt
  2. src/bar.c
  3. src/baz.c
  4. src/test/bartest.c

Ensuite, les motifs:

  • *.c Ne correspond à rien (il n'y a pas de fichiers .c dans le répertoire courant)
  • src/*.c Correspond à 2 et 3
  • */*.c Correspond à 2 et 3 (car * ne correspond qu'à un seul niveau)
  • **/*.c Correspond à 2, 3 et 4 (car ** correspond à n'importe quel nombre de niveaux)
  • bar.* Correspond à 1
  • **/bar.* Correspond à 1 et 2
  • **/bar*.* correspond à 1, 2 et 4
  • src/ba?.c correspond à 2 et 3
224
benzado

Voici quelques correspondances de motifs supplémentaires qui ne sont pas si évidentes dans la documentation. Testé en utilisant NAnt pour les fichiers d'exemple dans la réponse de benzado:

  • src** Correspond à 2, 3 et 4
  • **.c Correspond à 2, 3 et 4
  • **ar.* Correspond à 1 et 2
  • **/bartest.c/** Correspond à 4
  • src/ba?.c/** Correspond à 2 et 3
14
sparkplug

Double astérisque (**) sont associés aux noms de dossier correspondants, tandis que les astérisques (* = multi characters) ainsi que le point d'interrogation (? = single character) sont utilisés pour faire correspondre les noms de fichiers.

4

Consultez le référence Nant . Les modèles d'ensemble de fichiers sont les suivants:

'*' correspond à zéro ou plusieurs caractères, par exemple * .cs
'?' correspond à un caractère, par ex. ? .cs

Et '**' correspond à une arborescence de répertoires, par exemple src/**/*. cs trouvera tous les fichiers cs dans n'importe quel sous-répertoire de src.

3
Andy Whitfield