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 SomethingSomething
bất cứ đâu, hãy sử dụng -L
tùy chọn:
grep -L -E 'extends[[:space:]]+SomethingSomething' FILENAME…
Một số phiên bản của grep không có -L
tù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ì grep
nó 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 globstar
trước (bạn có thể đặt cái này vào trong ~/.bashrc
).
grep -L -E 'extends[[:space:]]+SomethingSomething' **/*.java