2012-07-24 49 views
41

Với lệnh grep bình thường, có một tùy chọn --exclude (được trình bày chi tiết tại đây: Use grep --exclude/--include syntax to not grep through certain files) cho phép bạn bỏ qua các tệp cụ thể khi bạn đang grepping.Làm cách nào để loại trừ một tệp cụ thể khỏi ack (ack-grep)?

Tùy chọn của Ack --type sẽ chăm sóc 95% trường hợp bạn muốn loại trừ tệp nhưng không (theo như tôi có thể biết) xử lý trường hợp loại trừ tệp cụ thể. Tôi đã có một tệp JS đã biên dịch có nội dung của mọi tệp JS khác trong đó (trên một dòng), vì vậy mỗi lần tôi grep cho mọi thứ Tôi lấy lại toàn bộ nội dung của tệp được biên dịch khổng lồ đó.

Tôi không muốn từ bỏ ack và quay lại grep về điều này, nhưng thực tế là thực sự là gây phiền nhiễu. Xin vui lòng, ai đó cho tôi biết có một cách để loại trừ các tập tin cụ thể từ các tìm kiếm ack.

Trả lời

11

Không, ack 1.x sẽ không cho phép bạn loại trừ một tệp. Trong ack 2.0, bạn có thể. ack 2.0 hiện đang ở phiên bản alpha đầu tiên hiện là phiên bản được khuyến nghị hiện tại của ack.

Theo như trường hợp cụ thể của bạn về tệp Javascript được rút gọn, bạn đang sử dụng phiên bản ack nào? ack 1.96 nên bỏ qua JavaScript được rút gọn dựa trên phần mở rộng. Nếu kiểm tra mở rộng không hoạt động, bạn có thể có thể hack ack chính nó, vì nó là một chương trình Perl duy nhất. Bạn có thể hack chức năng is_searchable.

Trong ack 2.0, chúng tôi đang xem xét bỏ qua bất kỳ dòng nào trên 500 ký tự vì rõ ràng đó không phải là mã nguồn.

Bạn cũng có thể muốn tham gia với chúng tôi trên danh sách gửi thư ack-users. Chúng tôi khá nhạy cảm.

+0

Thực tế, điểm dừng chân tiếp theo của tôi là danh sách gửi thư ack, nhưng tôi đã kiểm tra ở đây trước để đảm bảo rằng tôi không bỏ sót điều gì rõ ràng :-) Cảm ơn Andy. – machineghost

+0

P.S. Tôi đang chọn tên tệp cho tệp JS đã biên dịch của mình, do đó, tại thời điểm này, tệp này chỉ được xây dựng.js. Tôi sẽ thử đổi tên nó thành built.min.js và xem có giúp được không. – machineghost

84

Để bỏ qua một tập tin duy nhất sử dụng ack 2.0, cung cấp một spec bộ lọc cho --ignore-file cờ:

--ignore-file=is:cljout.js

+1

'đang làm gì? 'Đang làm gì ở đây? –

+3

Đối sánh tên tệp chính xác. http://beyondgrep.com/documentation/ack-2.04-man.html#is_filename –

+4

Điều này có tác dụng đối với tôi đối với tên tệp, nhưng không phải nếu tôi muốn cung cấp một tệp cụ thể (ví dụ: đường dẫn và tên tệp). – tremby

1

Cũng tốt biết với ack2.0, bạn có thể chỉ định các tùy chọn này trong a .ackrc file nếu bạn phải thường xuyên lọc các tệp.

2

Nếu bạn chạy ack --create-ackrc, nó sẽ xuất ra toàn bộ các giá trị đặt trước cho các tệp phổ biến như javascript, css và thư mục nhỏ như node_modules và .git. Rất hữu dụng!

Đây là tùy chọn js được rút gọn:

# minified Javascript 
--ignore-file=match:/[.-]min[.]js$/ 
--ignore-file=match:/[.]js[.]min$ 

Nếu bạn muốn tiết kiệm này để .ackrc chạy

ack --create-ackrc >> ~/.ackrc 

và sau đó xóa những gì bạn không cần từ tập tin đó.

Các vấn đề liên quan