Como uso os padrões de nomenclatura Nant/Ant?
Pergunta
Devo admitir que sempre esqueci as complexidades sintáticas dos padrões de nomenclatura de Nant (por exemplo,aqueles usados em conjuntos de arquivos).A coisa de asterisco duplo/asterisco único parece ser muito esquecível em minha mente.
Alguém pode fornecer um guia definitivo para os padrões de nomenclatura?
Solução
As regras são:
- uma única estrela (*) corresponde a zero ou mais caracteres dentro de um nome de caminho
- uma estrela dupla (**) corresponde a zero ou mais caracteres em todos os níveis de diretório
- um ponto de interrogação (?) corresponde exatamente a um caractere em um nome de caminho
Outra maneira de pensar sobre isso é que a estrela dupla (**) corresponde à barra (/), mas a estrela única (*) não.
Digamos que você tenha os arquivos:
- barra.txt
- src/bar.c
- src/baz.c
- src/test/bartest.c
Depois os padrões:
*.c
não corresponde a nada (não há arquivos .c no diretório atual)src/*.c
jogos 2 e 3*/*.c
corresponde a 2 e 3 (porque * corresponde apenas a um nível)**/*.c
corresponde a 2, 3 e 4 (porque ** corresponde a qualquer número de níveis)bar.*
corresponde 1**/bar.*
partidas 1 e 2**/bar*.*
corresponde a 1, 2 e 4src/ba?.c
jogos 2 e 3
Outras dicas
Aqui estão algumas correspondências de padrões extras que não são tão óbvias na documentação.Testado usando NAnt para os arquivos de exemplo na resposta do benzado:
src**
partidas 2, 3 e 4**.c
corresponde a 2, 3 e 4**ar.*
partidas 1 e 2**/bartest.c/**
corresponde 4src/ba?.c/**
jogos 2 e 3
Asteriscos duplos (**
) estão associados à correspondência de nomes de pastas, enquanto símbolos únicos asterisco (* = multi characters
) bem como o ponto de interrogação (? = single character
) são usados para corresponder aos nomes dos arquivos.
Confira a Referência nant.Os padrões do conjunto de arquivos são:
'*' corresponde a zero ou mais caracteres, por ex.*.cs
'?' corresponde a um personagem, por exemplo?.cs
E '**' corresponde a uma árvore de diretórios, por exemplo.src/**/*.cs encontrará todos os arquivos cs em qualquer subdiretório de src.