2009-05-19 24 views
13

Điều này có thể trùng lặp như tôi tin rằng tôi đã thấy nội dung như vậy nhưng không thể tìm thấy nó nữa vì vậy tôi hỏi:Grep: nhận tất cả tệp không có dòng phù hợp với

Tôi có rất nhiều tệp có nhiều dòng và trong hầu hết các trường hợp, một trong các dòng chứa một phần tử con nào đó. Tôi muốn có tất cả các tập tin mà không có một dòng với patern này.

CHỈNH SỬA: Chỉ cần sử dụng tùy chọn grep "-L". Đây là một bản sao, tôi chắc chắn nhưng không tìm thấy phía sau gốc ...

+0

tại sao Tôi nhận được -1 cho cái này? – claf

+0

Đoán của tôi là ai đó nghĩ rằng thông tin đã có sẵn trong sách hướng dẫn. – JesperE

+0

Nếu bạn đã tìm thấy câu trả lời, không chỉnh sửa câu hỏi của bạn với câu trả lời, thay vào đó hãy đăng câu trả lời. Ngày nay bạn thậm chí có thể chấp nhận câu trả lời của riêng bạn. – JesperE

Trả lời

24

Câu trả lời chỉ là để có được những "-L" tùy chọn để có tập tin KHÔNG mẫu ... Nên đọc kỹ người đàn ông hơn!

6

Grep trả 0/1 để chỉ ra nếu có một trận đấu, vì vậy bạn có thể làm một cái gì đó như thế này:

for f in *.txt; do 
    if ! grep -q "some expression" $f; then 
     echo $f 
    fi 
done 

EDIT: Bạn cũng có thể sử dụng tùy chọn -L:

grep -L "một số khái niệm" *

+0

không cần loop chỉ cần sử dụng tùy chọn "-L" của grep. – claf

0

thử "đếm" và bộ lọc nơi bằng ": 0":

grep -c [pattern] * | grep ":0" 

(nếu bạn sử dụng TurboGREP ho, bạn sẽ không có một công tắc -L;))

+0

TurboGREP dường như có -l và -v, vì vậy bạn chỉ có thể sử dụng 'grep -lv 'expr' *'. – amertune

+0

nếu turbogrep hoạt động như gnu grep, -lv không làm những gì bạn muốn. nó cho bạn thấy tất cả các tệp với bất kỳ dòng nào không khớp với biểu thức. –

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