Làm cách nào để sử dụng các mẫu đặt tên Nant / Ant?


99

Tôi phải thừa nhận rằng tôi luôn quên các nội dung cú pháp của các mẫu đặt tên cho Nant (ví dụ: những mẫu được sử dụng trong các tập tin). Những thứ dấu hoa thị kép / dấu hoa thị đơn dường như rất khó quên trong tâm trí tôi.

Ai đó có thể cung cấp một hướng dẫn rõ ràng về các mẫu đặt tên không?


3
Tôi đã đọc tài liệu tham khảo. Và đọc lại nó. Và đọc lại nó. Tôi chỉ nghĩ rằng nó có một bộ ví dụ thực sự nghèo nàn và không rõ ràng trong thông điệp của nó.
berko 17-08

Có lẽ bạn có thể chỉ định chính xác những gì bạn đang cố gắng đạt được và ai đó có thể cung cấp câu trả lời tốt hơn?
Andy Whitfield

Câu trả lời:


240

Các quy tắc là:

  • một dấu sao (*) khớp với không hoặc nhiều ký tự trong tên đường dẫn
  • dấu sao kép (**) khớp với không hoặc nhiều ký tự trên các cấp thư mục
  • dấu chấm hỏi (?) khớp chính xác với một ký tự trong tên đường dẫn

Một cách khác để nghĩ về nó là dấu sao đôi (**) khớp với dấu gạch chéo (/) nhưng dấu sao đơn (*) thì không.

Giả sử bạn có các tệp:

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

Sau đó, các mẫu:

  • *.c             không có gì khớp (không có tệp .c nào trong thư mục hiện tại)
  • src/*.c     trận 2 và 3
  • */*.c         khớp với 2 và 3 (vì * chỉ khớp với một cấp)
  • **/*.c       khớp với 2, 3 và 4 (vì ** khớp với bất kỳ số cấp nào)
  • bar.*         phù hợp với 1
  • **/bar.*   khớp 1 và 2
  • **/bar*.* khớp với 1, 2 và 4
  • src/ba?.c trận 2 và 3    

5
Tôi nghĩ rằng đây là một lời giải thích tốt hơn nhiều so với tài liệu tham khảo Nant. Chúc mừng!
berko 18-08

1
Src / * / ** khớp với gì? Tôi mong chờ nó được 4, nhưng kinh nghiệm của tôi với maven dường như chỉ ra rằng bạn kết hợp bất kỳ tập tin trong bất kỳ thư mục bạn cần src / * / * / **
Matthew Buckett

1
những gì sẽ **.cphù hợp?
chharvey

3
Tôi không sử dụng Ant nữa, vì vậy tôi không có chỗ để trả lời các câu hỏi tiếp theo. Bạn nên đặt một câu hỏi mới hoặc tốt hơn là tìm câu trả lời và sau đó gửi bản chỉnh sửa cho câu trả lời của tôi.
benzado

1
@sitaktif Một cách để suy nghĩ về nó là nó bar.txtngầm định ./bar.txt( .có nghĩa là thư mục hiện tại). Vì vậy, danh sách đó thực sự là ./bar.txt, ./src/bar.cvv và ./được giả định.
benzado

16

Dưới đây là một số đối sánh mẫu bổ sung không quá rõ ràng trong tài liệu. Đã kiểm tra bằng NAnt cho các tệp ví dụ trong câu trả lời của benzado:

  • src**                      trận 2, 3 và 4
  • **.c                        khớp 2, 3 và 4
  • **ar.*                    khớp 1 và 2
  • **/bartest.c/**  phù hợp với 4
  • src/ba?.c/**        trận 2 và 3

2
. lưu ý nhỏ: với kiến (1.8.2) ** c là không thay thế cho ** / * c.
nonsenz

4

Dấu hoa thị kép ( **) được liên kết với việc khớp tên thư mục, trong khi ký hiệu đơn dấu hoa thị ( * = multi characters) cũng như dấu chấm hỏi ( ? = single character) được sử dụng để khớp với tên tệp.


3

Kiểm tra tài liệu tham khảo Nant . Các mẫu tập tin là:

'*' khớp với không hoặc nhiều ký tự, ví dụ: * .cs
'?' khớp với một ký tự, ví dụ: .cs

Và '**' khớp với một cây thư mục, ví dụ: src / ** / *. Cs sẽ tìm thấy tất cả các tệp cs trong bất kỳ thư mục con nào của src.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.