Як використовувати шаблони іменування Nant / Ant?


99

Я мушу визнати, що я завжди забував синтаксичні внутрішньокатегорії шаблонів імен для Nant (наприклад, ті, які використовуються у наборах файлів). Подвійні зірочки / речі з одиночною зірочкою здаються мені дуже забутими.

Чи може хтось надати остаточне керівництво щодо моделей імен?


3
Я прочитав посилання. І перечитайте його. І перечитайте його. Я просто думаю, що він має дуже бідний приклад і є незрозумілим у своєму повідомленні.
berko

Можливо, ви можете вказати, що саме ви намагаєтеся досягти, і хтось може дати кращу відповідь?
Енді Уітфілд

Відповіді:


240

Правила такі:

  • одна зірка (*) відповідає нулю або більше символів у назві шляху
  • подвійна зірка (**) відповідає нулю або більше символів на всіх рівнях каталогу
  • знак питання (?) відповідає точно одному символу в імені шляху

Інший спосіб подумати над цим - це подвійна зірка (**), яка відповідає матчу слэш (/), але одна зірка (*) - ні.

Скажімо, у вас є файли:

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

Потім шаблони:

  • *.c             нічого не відповідає (у поточному каталозі файлів .c немає)
  • src/*.c     матчі 2 та 3
  • */*.c         відповідає 2 і 3 (тому що * відповідає лише одному рівню)
  • **/*.c       відповідає 2, 3 та 4 (бо ** відповідає будь-якій кількості рівнів)
  • bar.*         матчі 1
  • **/bar.*   відповідники 1 і 2
  • **/bar*.* відповідає 1, 2 і 4
  • src/ba?.c матчі 2 та 3    

5
Я думаю, що це набагато краще пояснення, ніж посилання на Нанта. Ура!
berko

1
Що відповідає src / * / **? Я б очікував, що це буде 4, але, схоже, мій досвід роботи з maven вказує на те, що ви відповідаєте будь-яким файлам у будь-яких папках src / * / * / **
Matthew Buckett

1
що б **.cвідповідало?
chharvey

3
Я більше не використовую мурашок, тому мені не вдається відповісти на подальші запитання. Вам слід задати нове запитання або, ще краще, знайти відповідь, а потім надіслати редагування моєї відповіді.
бензадо

1
@sitaktif Один із способів думати про це - bar.txtце неявно ./bar.txt( .означає поточний каталог). Так що список дійсно ./bar.txt, ./src/bar.cі т.д. , і ./передбачається.
бензадо

16

Ось кілька додаткових збігів шаблонів, які не так очевидні з документації. Тестовано за допомогою NAnt для прикладних файлів у відповіді benzado:

  • src**                      збіги 2, 3 і 4
  • **.c                        відповідає 2, 3 та 4
  • **ar.*                    відповідники 1 і 2
  • **/bartest.c/**  матчі 4
  • src/ba?.c/**        матчі 2 та 3

2
невелика примітка: з ant (1.8.2) **. c не замінює ** / *. c
nonsenz

4

Подвійні зірочки ( **) пов'язані зі збігом імен папок, тоді як окремі символи зірочки ( * = multi characters), а також питання запитання ( ? = single character) використовуються для відповідності імен файлів.


3

Ознайомтеся з посиланням на Nant . Шаблони наборів файлів:

'*' відповідає нулю або більше символів, наприклад * .cs
'?' відповідає одному символу, наприклад? .cs

І "**" відповідає дереву каталогів, наприклад, src / ** / *. Cs знайде всі файли cs у будь-якому підкаталозі src.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.