Wie verwende ich Nant / Ant-Namensmuster?

99

Ich muss zugeben, dass ich immer die syntaktischen Intracacies der Namensmuster für Nant vergessen habe (z. B. die in Dateigruppen verwendeten). Das Doppelsternchen / Einzelsternchen-Zeug scheint mir sehr unvergesslich zu sein.

Kann jemand eine endgültige Anleitung zu den Namensmustern geben?

berko
quelle
3
Ich habe die Referenz gelesen. Und lies es noch einmal. Und lies es noch einmal. Ich denke nur, dass es wirklich schlechte Beispiele gibt und in seiner Botschaft unklar ist.
berko
Vielleicht können Sie genau angeben, was Sie erreichen möchten, und jemand kann eine bessere Antwort geben?
Andy Whitfield

Antworten:

240

Die Regeln sind:

  • Ein einzelner Stern (*) entspricht null oder mehr Zeichen innerhalb eines Pfadnamens
  • Ein Doppelstern (**) entspricht null oder mehr Zeichen allen Verzeichnisebenen
  • Ein Fragezeichen (?) entspricht genau einem Zeichen innerhalb eines Pfadnamens

Eine andere Möglichkeit, darüber nachzudenken, ist, dass Doppelstern (**) mit Schrägstrich (/) übereinstimmt, Einzelstern (*) jedoch nicht.

Angenommen, Sie haben die Dateien:

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

Dann die Muster:

  • *.c             stimmt mit nichts überein (es gibt keine .c-Dateien im aktuellen Verzeichnis)
  • src/*.c     entspricht 2 und 3
  • */*.c         entspricht 2 und 3 (weil * nur einer Ebene entspricht)
  • **/*.c       entspricht 2, 3 und 4 (weil ** mit einer beliebigen Anzahl von Ebenen übereinstimmt)
  • bar.*         entspricht 1
  • **/bar.*   entspricht 1 und 2
  • **/bar*.* entspricht 1, 2 und 4
  • src/ba?.c entspricht 2 und 3    
Benzado
quelle
5
Ich denke, dass dies eine viel bessere Erklärung ist als die Nant-Referenz. Prost!
berko
1
Was passt zu src / * / **? Ich würde erwarten, dass es 4 ist, aber meine Erfahrung mit Maven scheint darauf hinzudeuten, dass Sie mit allen Dateien in den Ordnern übereinstimmen, die Sie benötigen src / * / * / **
Matthew Buckett
1
was würde **.cpassen?
Chharvey
3
Ich benutze Ant nicht mehr, daher bin ich nicht in der Lage, Folgefragen zu beantworten. Sie sollten eine neue Frage stellen oder, noch besser, die Antwort finden und dann eine Antwort an meine Antwort senden.
Benzado
1
@sitaktif Eine Möglichkeit, darüber nachzudenken, bar.txtist die implizite ./bar.txt( dh .das aktuelle Verzeichnis). Also diese Liste wirklich ist ./bar.txt, ./src/bar.cusw. , und das ./wird angenommen.
Benzado
16

Hier sind einige zusätzliche Musterübereinstimmungen, die aus der Dokumentation nicht so offensichtlich sind. Getestet mit NAnt für die Beispieldateien in Benzados Antwort:

  • src**                      entspricht 2, 3 und 4
  • **.c                        entspricht 2, 3 und 4
  • **ar.*                    entspricht 1 und 2
  • **/bartest.c/**  Streichhölzer 4
  • src/ba?.c/**        entspricht 2 und 3
Zündkerze
quelle
2
kleine Anmerkung: mit Ameise (1.8.2) **. c ist kein Ersatz für ** / *. c
nonsenz
4

Doppelte Sternchen ( **) sind mit den übereinstimmenden Ordnernamen verknüpft, während einzelne Symbole asterisk ( * = multi characters) sowie das Fragezeichen ( ? = single character) verwendet werden, um die Dateinamen abzugleichen.

Aditya Kumar Shrivastava
quelle
3

Überprüfen Sie die Nant-Referenz . Die Dateigruppenmuster sind:

'*' entspricht null oder mehr Zeichen, z. B. * .cs
'?' entspricht einem Zeichen, zB? .cs

Und '**' stimmt mit einem Verzeichnisbaum überein, z. B. src / ** / *. Cs findet alle cs-Dateien in einem beliebigen Unterverzeichnis von src.

Andy Whitfield
quelle