Komputer menjadi komputer: komputer melakukan apa yang Anda perintahkan, bukan apa yang Anda inginkan.
grep -v "something something"
mencetak semua garis yang tidak mengandung something something
. Misalnya, ia mencetak dua baris di antara tiga berikut:
hello world
this is something something
something else
Untuk mencetak file yang tidak mengandung di extends SomethingSomething
mana pun, gunakan -L
opsi:
grep -L -E 'extends[[:space:]]+SomethingSomething' FILENAMEā¦
Beberapa versi grep tidak memiliki -L
opsi (tidak ditentukan oleh POSIX ). Jika milik Anda tidak, mintalah ia mencetak apa-apa, dan gunakan kode pengembalian untuk membuat shell panggilan melakukan apa pun yang seharusnya dilakukan.
grep -q -E 'extends[[:space:]]+SomethingSomething' FILENAME ||
echo "$FILENAME"
Atau, gunakan 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 }
'
Di Linux atau Cygwin (atau sistem lain dengan GNU grep), Anda tidak perlu menggunakan find
, karena grep
mampu berulang.
grep -R --include='*.java' -L -E 'extends[[:space:]]+SomethingSomething'
Jika shell Anda adalah ksh atau bash atau zsh, Anda dapat membuat shell melakukan pencocokan nama file. Pada bash, jalankan set -o globstar
terlebih dahulu (Anda dapat menempatkan ini di Anda ~/.bashrc
).
grep -L -E 'extends[[:space:]]+SomethingSomething' **/*.java