it-swarm-es.tech

¿Cómo uso los patrones de nombres de Nant / Ant?

Debo admitir que siempre olvidé las intracatidades sintácticas de los patrones de denominación de Nant (por ejemplo, los que se utilizan en los conjuntos de archivos). El doble asterisco/asterisco único parece ser muy olvidable en mi mente.

¿Puede alguien proporcionar una guía definitiva para los patrones de nombres?

88
berko

Las reglas son:

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

Otra forma de pensar sobre esto es que la estrella doble (**) coincida con una barra (/), pero la estrella simple (*) no lo hace.

Digamos que tienes los archivos:

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

Luego los patrones:

  • *.c no coincide con nada (no hay archivos .c en el directorio actual)
  • src/*.c coincide con 2 y 3
  • */*.c coincide con 2 y 3 (porque * solo coincide con un nivel)
  • **/*.c coincide con 2, 3 y 4 (porque ** coincide con cualquier número de niveles)
  • bar.* coincide con 1
  • **/bar.* coincide con 1 y 2
  • **/bar*.* coincide con 1, 2 y 4
  • src/ba?.c coincide con 2 y 3
217
benzado

Aquí hay algunas coincidencias de patrones adicionales que no son tan obvias en la documentación. Probado utilizando NAnt para los archivos de ejemplo en la respuesta de benzado:

  • src** coincide con 2, 3 y 4
  • **.c coincide con 2, 3 y 4
  • **ar.* coincide con 1 y 2
  • **/bartest.c/** coincide con 4
  • src/ba?.c/** coincide con 2 y 3
14
sparkplug

Los asteriscos dobles (**) se asocian con la coincidencia de nombres de carpeta, mientras que los símbolos de asterisco (* = multi characters) y los signos de interrogación (? = single character) se usan para coincidir con los nombres de los archivos.

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

'*' coincide con cero o más caracteres, por ejemplo, * .cs
'?' coincide con un carácter, por ejemplo, ? .cs

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

3
Andy Whitfield