Máy tính là một máy tính: nó đang làm những gì bạn bảo nó làm thay vì những gì bạn muốn nó làm.
grep -v "something something"in tất cả các dòng không chứa something something. Ví dụ, nó in hai dòng trong số ba dòng sau:
hello world
this is something something
something else
Để in các tệp không chứa ở extends SomethingSomethingbất cứ đâu, hãy sử dụng -Ltùy chọn:
grep -L -E 'extends[[:space:]]+SomethingSomething' FILENAME…
Một số phiên bản của grep không có -Ltùy chọn (không được chỉ định bởi POSIX ). Nếu bạn không làm như vậy, hãy in nó ra và không sử dụng mã trả về để vỏ gọi thực hiện bất cứ điều gì cần làm.
grep -q -E 'extends[[:space:]]+SomethingSomething' FILENAME ||
echo "$FILENAME"
Ngoài ra, sử dụng awk.
awk '
FNR == 1 && NR != 1 && !found { print fn }
FNR == 1 { fn = FILENAME; found = 0; }
/extends[[:space:]]+SomethingSomething/ { found = 1 }
END { if (fn != "" && !found) print fn }
'
Trên Linux hoặc Cygwin (hoặc hệ thống khác có GNU grep), bạn không cần sử dụng find, vì grepnó có khả năng đệ quy.
grep -R --include='*.java' -L -E 'extends[[:space:]]+SomethingSomething'
Nếu shell của bạn là ksh hoặc bash hoặc zsh, bạn có thể làm cho shell thực hiện khớp tên tệp. Trên bash, hãy chạy set -o globstartrước (bạn có thể đặt cái này vào trong ~/.bashrc).
grep -L -E 'extends[[:space:]]+SomethingSomething' **/*.java