2008-09-16 4 views
79

Tengo que admitir que siempre olvidé las intracaias sintácticas de los patrones de nomenclatura de Nant (por ejemplo, los que se usan en los conjuntos de archivos). El doble asterisco/asterisco simple parece ser muy olvidable en mi mente.¿Cómo uso los patrones de nomenclatura Nant/Ant?

¿Alguien puede proporcionar una guía definitiva para los patrones de nombres?

+3

He leído la referencia. Y volver a leerlo. Y volver a leerlo. Simplemente creo que tiene un conjunto realmente pobre de ejemplos y no está claro en su mensaje. – berko

+0

¿Tal vez puede especificar exactamente lo que está tratando de lograr y alguien puede proporcionar una mejor respuesta? –

Respuesta

185

Las reglas son:

  • una sola estrella (*) concuerda con cero o más caracteres dentro de un nombre de ruta
  • una estrella doble (**) concuerda con cero o más caracteres través de niveles de directorio
  • un signo de interrogación (?) coincide exactamente un caracter dentro de un nombre de ruta

de anothe La forma de pensarlo es doble estrella (**) coincide con barra inclinada (/), pero la estrella simple (*) no.

Digamos que usted tiene los archivos:

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

Luego los patrones:

  • *.c                       partidos nada (no hay.archivos de C en el directorio actual)
  • src/*.c         partidos 2 y 3
  • */*.c                 los partidos 2 y 3 (porque * sólo coincide con un nivel)
  • **/*.c             coincide con 2, 3 y 4 (porque ** coincide con cualquier cantidad de niveles)
  • bar.*                 partidos 1
  • **/bar.*     partidos 1 y 2
  • **/bar*.* partidos 1, 2, y 4
  • src/ba?.c partidos 2 y 3      
+4

Creo que esta es una explicación mucho mejor que la referencia de Nant. ¡Aclamaciones! – berko

+0

¿Con qué src/*/** coinciden? Esperaría que fuera 4, pero mi experiencia con Maven parece indicar que se combinan los archivos en las carpetas que necesita src/*/*/** –

+1

¿con qué '**. C' coincidiría? – chharvey

2

Echa un vistazo a Nant reference. Los patrones del conjunto de archivos son:

'*' coincide con cero o más caracteres, p. * .cs
'?' coincide con un personaje, p. ? .cs

Y '**' coincide con un árbol de directorios, p. src/**/*. cs encontrará todos los archivos cs en cualquier subdirectorio de src.

3

Los asteriscos dobles (**) están asociados con los nombres de carpeta que coinciden, mientras que los símbolos individuales asterisco (* = multi characters), así como el signo de interrogación (? = single character) se utilizan para hacer coincidir los nombres de archivo.

10

Aquí hay algunas coincidencias de patrones extra que no son tan evidentes en la documentación.Probado usando Nant para los archivos de ejemplo en la respuesta de benzado:

  • src**                                           partidos 2, 3 y 4
  • **.c                                               partidos 2, 3, y 4
  • **ar.*                                       partidos 1 y 2
  • **/bartest.c/**   partidos 4
  • src/ba?.c/**               coincidencias 2 y 3
+2

nota pequeña: con ant (1.8.2) \ **. C no reemplaza a \ **/\ *. C – nonsenz

Cuestiones relacionadas