Como uso os padrões de nomenclatura Nant / Ant?

99

Tenho que admitir que sempre esqueci as intracies sintáticas dos padrões de nomenclatura de Nant (por exemplo, aqueles usados ​​em conjuntos de arquivos). O 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?

Berko
fonte
3
Eu li a referência. E releia. E releia. Só acho que tem um conjunto de exemplos muito pobre e sua mensagem não é clara.
berko
Talvez você possa especificar exatamente o que está tentando alcançar e alguém possa dar uma resposta melhor?
Andy Whitfield,

Respostas:

240

As regras são:

  • uma única estrela (*) corresponde a zero ou mais caracteres em um nome de caminho
  • uma estrela dupla (**) corresponde a zero ou mais caracteres nos níveis do diretório
  • um ponto de interrogação (?) corresponde exatamente a um caractere em um nome de caminho

Outra maneira de pensar sobre isso é estrela dupla (**) corresponde à barra (/), mas estrela simples (*) não.

Digamos que você tenha os arquivos:

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

Então os padrões:

  • *.c             não corresponde a nada (não há arquivos .c no diretório atual)
  • src/*.c     corresponde a 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.*         jogos 1
  • **/bar.*   corresponde a 1 e 2
  • **/bar*.* corresponde a 1, 2 e 4
  • src/ba?.c corresponde a 2 e 3    
benzado
fonte
5
Acho que esta é uma explicação muito melhor do que a referência de Nant. Felicidades!
berko
1
O que corresponde a src / * / **? Eu esperava que fossem 4, mas minha experiência com o maven parece indicar que você corresponde a todos os arquivos em qualquer pasta necessária src / * / * / **
Matthew Buckett
1
o que **.ccombinaria?
chharvey
3
Eu não uso mais o Ant, então não estou em condições de responder a perguntas de acompanhamento. Você deve fazer uma nova pergunta ou, melhor ainda, encontrar a resposta e, em seguida, enviar uma edição à minha resposta.
benzado
1
@sitaktif Uma maneira de pensar sobre isso bar.txté implicitamente ./bar.txt( .significa o diretório atual). Então, essa lista é realmente ./bar.txt, ./src/bar.cetc. eo ./é assumida.
benzado
16

Aqui estão algumas correspondências de padrão 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**                      corresponde a 2, 3 e 4
  • **.c                        corresponde a 2, 3 e 4
  • **ar.*                    corresponde a 1 e 2
  • **/bartest.c/**  jogos 4
  • src/ba?.c/**        corresponde a 2 e 3
vela de ignição
fonte
2
pequena nota: com formiga (1.8.2) **. c não substitui ** / *. c
nonsenz
4

Asteriscos duplos ( **) são associados à correspondência dos nomes das pastas, enquanto asteriscos de símbolos únicos ( * = multi characters) e também o ponto de interrogação ( ? = single character) são usados ​​para corresponder aos nomes dos arquivos.

Aditya Kumar Shrivastava
fonte
3

Confira a referência de Nant . Os padrões do conjunto de arquivos são:

'*' corresponde a zero ou mais caracteres, por exemplo * .cs
'?' corresponde a um caractere, por exemplo? .cs

E '**' corresponde a uma árvore de diretório, por exemplo, src / ** / *. Cs encontrará todos os arquivos cs em qualquer subdiretório de src.

Andy Whitfield
fonte