2011-11-19 69 views
14
ack foo * .citrus và tìm kiếm chuỗi 'foo' trong tất cả các tệp Citrus trong thư mục hiện tại và bên dưới. Vấn đề là điều này sẽ không hoạt động nếu không có bất kỳ tệp Citrus nào trong thư mục hiện tại.

Ack: Tìm kiếm cây thư mục cho các tệp có đuôi cụ thể

Tôi đã cố gắng gây rối với -G mà không thành công. Tôi có thực sự cần phải thêm một loại tệp trong .ackrc chỉ để giới hạn tìm kiếm vào các tệp có phần mở rộng đã cho không?

Trả lời

11

Theo mặc định, ack chỉ tìm kiếm trong các tệp có các loại đã biết (như * .java, * .cpp, v.v.). Nó không biết về các tập tin * .citrus, vì vậy để tìm kiếm trong các tập tin như vậy, bạn phải sử dụng -a dòng cmd switch:

$ack -a -G '\.citrus$' foo 
1.d/1.citrus 
1:foo_bar 
+1

hoặc bạn có thể sử dụng mẹo này: http://stackoverflow.com/questions/ 3870611/how-to-let-ack-support-more-filetypes –

+1

-a là quá mức cần thiết. --type-set là con đường để đi. –

+1

Điều này là hợp lý, nhưng ít hơn hữu ích tối ưu. Nhiệm vụ đơn giản như vậy - "tìm kiếm tệp với tiện ích mở rộng này" - yêu cầu bạn không chỉ cho tiện ích mở rộng sử dụng phần mở rộng thông thường (-G), mà bạn muốn nó thực sự tìm kiếm các tệp đó (-a hoặc --type- thiết lập - ngay cả lựa chọn này cũng gây tranh cãi). Bạn phải yêu Unix. –

4

Bạn không cần phải cài đặt nó trong .ackrc nếu bạn không muốn. Bạn cũng có thể đặt ACK_OPTIONS trong môi trường của mình hoặc chỉ định các đối số --type-set trên dòng lệnh. ack không quan tâm.

12

Theo đề nghị của Andy Lester, bạn cũng có thể tạo ra một typeset witout lấy những rắc rối để thêm nó vào bạn .ackrc:

ack --type-set=cit=.citrus --cit "foo" 
Các vấn đề liên quan