Come si utilizzano i modelli di denominazione Nant/Ant?
Domanda
Devo ammettere che ho sempre dimenticato le complessità sintattiche dei modelli di denominazione per Nant (es.quelli utilizzati nei set di file).La questione del doppio asterisco/singolo asterisco sembra essere davvero dimenticabile nella mia mente.
Qualcuno può fornire una guida definitiva ai modelli di denominazione?
Soluzione
Le regole sono:
- una singola stella (*) corrisponde a zero o più caratteri all'interno di un nome di percorso
- una doppia stella (**) corrisponde a zero o più caratteri attraverso i livelli di directory
- un punto interrogativo (?) corrisponde esattamente a un carattere all'interno di un nome di percorso
Un altro modo di pensarci è che la doppia stella (**) corrisponde alla barra (/), ma la stella singola (*) no.
Diciamo che hai i file:
- bar.txt
- src/bar.c
- src/baz.c
- src/test/bartest.c
Poi i modelli:
*.c
non corrisponde a nulla (non ci sono file .c nella directory corrente)src/*.c
corrispondenze 2 e 3*/*.c
corrisponde a 2 e 3 (perché * corrisponde solo a un livello)**/*.c
corrisponde a 2, 3 e 4 (perché ** corrisponde a qualsiasi numero di livelli)bar.*
corrisponde 1**/bar.*
corrisponde 1 e 2**/bar*.*
corrisponde a 1, 2 e 4src/ba?.c
corrispondenze 2 e 3
Altri suggerimenti
Ecco alcune corrispondenze di pattern extra che non sono così ovvie dalla documentazione.Testato utilizzando NAnt per i file di esempio nella risposta di benzado:
src**
corrisponde a 2, 3 e 4**.c
corrisponde a 2, 3 e 4**ar.*
corrisponde 1 e 2**/bartest.c/**
corrisponde 4src/ba?.c/**
corrispondenze 2 e 3
Doppi asterischi (**
) sono associati alla corrispondenza dei nomi delle cartelle, mentre i singoli simboli asterisco (* = multi characters
) così come il punto interrogativo (? = single character
) vengono utilizzati per abbinare i nomi dei file.
Dai un'occhiata a Riferimento Nant.I modelli di set di file sono:
'*' corrisponde a zero o più caratteri, ad es.*.cs
'?' corrisponde a un personaggio, ad esempio?.cs
E '**' corrisponde a un albero di directory, ad es.src/**/*.cs troverà tutti i file cs in qualsiasi sottodirectory di src.