Bilgisayar bir bilgisayar olmak istiyor: Yapmasını istediğiniz şey yerine söylediğiniz şeyi yapıyor.
grep -v "something something"
içermeyen tüm satırları yazdırır something something
. Örneğin, aşağıdaki üç arasında iki satır yazdırır:
hello world
this is something something
something else
Hiçbir extends SomethingSomething
yerde bulunmayan dosyaları yazdırmak için şu -L
seçeneği kullanın:
grep -L -E 'extends[[:space:]]+SomethingSomething' FILENAME…
Bazı grep sürümlerinde -L
seçenek yoktur ( POSIX tarafından belirtilmez ). Sizinkini almazsanız, hiçbir şey yazdırmayın ve arama kabuğunun bunun yerine ne yapması gerektiğini yapmak için dönüş kodunu kullanın.
grep -q -E 'extends[[:space:]]+SomethingSomething' FILENAME ||
echo "$FILENAME"
Alternatif olarak awk kullanın.
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 }
'
Linux veya Cygwin'de (veya GNU grep'e sahip başka bir sistemde), tekrarlama yeteneğine sahip olduğu find
gibi kullanmanıza gerek grep
yoktur.
grep -R --include='*.java' -L -E 'extends[[:space:]]+SomethingSomething'
Kabuğunuz ksh veya bash veya zsh ise, kabuğun dosya adı eşleşmesini yapmasını sağlayabilirsiniz. set -o globstar
Önce bash, önce koş (bunu senin içine koyabilirsin ~/.bashrc
).
grep -L -E 'extends[[:space:]]+SomethingSomething' **/*.java