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?

È stato utile?

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:

  1. bar.txt
  2. src/bar.c
  3. src/baz.c
  4. 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)
  • **/*.ccorrisponde 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 4
  • src/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
  • **.ccorrisponde a 2, 3 e 4
  • **ar.* corrisponde 1 e 2
  • **/bartest.c/** corrisponde 4
  • src/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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top