Condividi tramite


Informazioni di riferimento per i criteri di corrispondenza dei file

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019

Sintassi dei criteri

Un criterio è una stringa o un elenco di stringhe delimitate da nuova riga. I nomi di file e directory vengono confrontati con i modelli da includere (o a volte escludere) in un'attività. È possibile creare un comportamento complesso impilando più modelli. Per una guida completa alla sintassi, vedere fnmatch.

Caratteri di corrispondenza

La maggior parte dei caratteri viene usata come corrispondenze esatte. Ciò che conta come corrispondenza "esatta" è dipendente dalla piattaforma: il file system di Windows non fa distinzione tra maiuscole e minuscole, quindi il modello "ABC" corrisponde a un file denominato "abc". Nei file system con distinzione tra maiuscole e minuscole, il modello e il nome non corrispondono.

I caratteri seguenti hanno un comportamento speciale.

  • * corrisponde a zero o più caratteri all'interno di un nome di file o directory. Vedere esempi.
  • ? corrisponde a qualsiasi singolo carattere all'interno di un nome di file o directory. Vedere esempi.
  • [] corrisponde a un set o a un intervallo di caratteri all'interno di un nome di file o directory. Vedere esempi.
  • ** carattere jolly ricorsivo. Ad esempio, /hello/**/* corrisponde a tutti i discendenti di /hello.

Globbing esteso

  • ?(hello|world) - corrisponde hello o world zero volte o una sola volta
  • *(hello|world) - zero o più occorrenze
  • +(hello|world) : una o più occorrenze
  • @(hello|world) - esattamente una volta
  • !(hello|world) : non hello o world

Annotazioni

I glob estesi non possono estendersi a separatori di directory. Ad esempio, +(hello/world|other) non è valido.

Commenti

I modelli che iniziano con # vengono considerati come commenti.

Escludere i modelli

L'! iniziale modifica il significato di un criterio di inclusione da escludere. È possibile includere un modello, escluderne un sottoinsieme e quindi includerne di nuovo un sottoinsieme: si tratta di un modello "interleaved".

Più ! capovolge il significato. Vedere esempi.

È necessario definire un criterio di inclusione prima di un criterio di esclusione. Vedere esempi.

Escape

Il wrapping di caratteri speciali in [] può essere usato per eseguire l'escape dei caratteri glob letterali in un nome file. Ad esempio, il nome di file letterale hello[a-z] può essere preceduto da un carattere di escape come hello[[]a-z].

Barra

/ viene usato come separatore di percorso in Linux e macOS. Nella maggior parte dei casi, gli agenti Windows accettano /. Le occasioni in cui è necessario usare il separatore di Windows (\) sono documentate.

Esempi

Esempi di criteri di base

Esempi di asterisco

Esempio 1: Dato il modello *Website.slne i file seguenti:

ConsoleHost.sln
ContosoWebsite.sln
FabrikamWebsite.sln
Website.sln

Il modello corrisponderà a:

ContosoWebsite.sln
FabrikamWebsite.sln
Website.sln

esempio 2: dato il modello *Website/*.proj e i percorsi:

ContosoWebsite/index.html
ContosoWebsite/ContosoWebsite.proj
FabrikamWebsite/index.html
FabrikamWebsite/FabrikamWebsite.proj

Il modello corrisponderà a:

ContosoWebsite/ContosoWebsite.proj
FabrikamWebsite/FabrikamWebsite.proj

Esempi di punto interrogativo

Esempio 1: Dato il modello log?.loge i file seguenti:

log1.log
log2.log
log3.log
script.sh

Il modello corrisponderà a:

log1.log
log2.log
log3.log

Esempio 2: Dato il modello image.???e i file seguenti:

image.tiff
image.png
image.ico

Il modello corrisponderà a:

image.png
image.ico

Esempi di set di caratteri

Esempio 1: Dato il modello Sample[AC].date i file seguenti:

SampleA.dat
SampleB.dat
SampleC.dat
SampleD.dat

Il modello corrisponderà a:

SampleA.dat
SampleC.dat

Esempio 2: Dato il modello Sample[A-C].date i file seguenti:

SampleA.dat
SampleB.dat
SampleC.dat
SampleD.dat

Il modello corrisponderà a:

SampleA.dat
SampleB.dat
SampleC.dat

Esempio 3: Dato il modello Sample[A-CEG].date i file seguenti:

SampleA.dat
SampleB.dat
SampleC.dat
SampleD.dat
SampleE.dat
SampleF.dat
SampleG.dat
SampleH.dat

Il modello corrisponderà a:

SampleA.dat
SampleB.dat
SampleC.dat
SampleE.dat
SampleG.dat

Esempi di caratteri jolly ricorsivi

Dato il modello **/*.exte i file seguenti:

sample1/A.ext
sample1/B.ext
sample2/C.ext
sample2/D.not

Il modello corrisponderà a:

sample1/A.ext
sample1/B.ext
sample2/C.ext

L'esempio seguente è stato generato da Copilot. Copilot è alimentato dall'IA, quindi sono possibili sorprese ed errori. Per altre informazioni, vedere Domande frequenti sull'uso generale di Copilot.

Il **/*.ext modello GLOB è un potente modello ricorsivo usato in molti file system e strumenti (ad esempio bash, zsh, Python globe così via) per trovare le corrispondenze con tutti i file che terminano nella .ext directory corrente e in tutte le sottodirectory, indipendentemente dal livello di annidamento profondo.

Ecco alcuni percorsi di esempio che corrispondono **/*.exta :

  • sample1/A.ext
  • sample1/B.ext
  • sample2/C.ext
  • sample2/subdir1/D.ext
  • sample2/subdir1/subdir2/E.ext
  • sample3/F.ext
  • sample3/subdir3/G.ext
  • sample3/subdir3/subdir4/H.ext

La ** parte indica un numero qualsiasi di directory (incluso zero) e *.ext indica qualsiasi file che termina con .ext.

Esempi di criteri di esclusione

In base al modello seguente e ai file seguenti:

*
!*.xml
ConsoleHost.exe
ConsoleHost.pdb
ConsoleHost.xml
Fabrikam.dll
Fabrikam.pdb
Fabrikam.xml

Il modello corrisponderà a:

ConsoleHost.exe
ConsoleHost.pdb
Fabrikam.dll
Fabrikam.pdb

Esempi di esclusione doppia

In base al modello seguente e ai file seguenti:

*
!*.xml
!!Fabrikam.xml
ConsoleHost.exe
ConsoleHost.pdb
ConsoleHost.xml
Fabrikam.dll
Fabrikam.pdb
Fabrikam.xml

Il modello corrisponderà a:

ConsoleHost.exe
ConsoleHost.pdb
Fabrikam.dll
Fabrikam.pdb
Fabrikam.xml

Esempi di esclusione di cartelle

In base al modello seguente e ai file seguenti:

**
!sample/**
ConsoleHost.exe
ConsoleHost.pdb
ConsoleHost.xml
sample/Fabrikam.dll
sample/Fabrikam.pdb
sample/Fabrikam.xml

Il modello corrisponderà a:

ConsoleHost.exe
ConsoleHost.pdb
ConsoleHost.xml