2011-11-18 28 views
7

Làm cách nào để thực hiện tìm kiếm đệ quy bằng grep khi loại trừ một thư mục cụ thể?Làm thế nào để loại trừ một thư mục trong một tìm kiếm đệ quy bằng grep?

Thông tin cơ bản: Tôi có một thư mục lớn bao gồm các tệp nhật ký mà tôi muốn xóa trong tìm kiếm. Cách dễ nhất là di chuyển thư mục log. Thật không may tôi không thể làm điều đó, như dự án bắt buộc vị trí.

Bất kỳ ý tưởng nào về cách thực hiện?

Trả lời

10

bạn đang tìm kiếm điều này?

từ grep xem man page:

--exclude-dir=DIR 
      Exclude directories matching the pattern DIR from recursive searches. 
+0

Cảm ơn một tấn, đôi khi tôi quên, cũng có trang người đàn ông :) – Kiran

+0

@KiranChandrashekhar Vui lòng chấp nhận câu trả lời đã cho. – FailedDev

+2

Phiên bản cũ hơn của grep không có cờ này là một sự xấu hổ :(. – ale

0

Là một thay thế, nếu bạn có thể sử dụng find trong tìm kiếm của bạn, nó cũng có thể có ích:

find [directory] -name "*.log" -prune -o -type f -print|grep ...
Các [directory] thực sự có thể là thư mục hiện tại nếu bạn muốn (chỉ cần . sẽ làm).

Phần tiếp theo, -name "*.log" -prune là tất cả cùng nhau. Nó tìm kiếm tên tập tin với mẫu *.log và sẽ loại bỏ chúng khỏi kết quả của bạn.

Tiếp theo là -o (cho "hoặc")

Sau đó, -type f -print mà nói "in (để stdout) bất kỳ loại đó là một tập tin."

Các kết quả đó phải bao gồm mọi tệp (không có thư mục nào được trả lại) được tìm thấy trong [directory] ngoại trừ các tệp kết thúc bằng .log. Sau đó, bạn có thể grep kết quả khi cần.

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