コンピューターはコンピューターです。それは、あなたがやりたいことではなく、あなたが指示したことをしています。
grep -v "something something"
を含まないすべての行を出力しますsomething something
。たとえば、次の3行のうち2行を印刷します。
hello world
this is something something
something else
extends SomethingSomething
どこにも含まれていないファイルを印刷するには、次の-L
オプションを使用します。
grep -L -E 'extends[[:space:]]+SomethingSomething' FILENAME…
grepの一部のバージョンには-L
オプションがありません(POSIXでは指定されていません)。表示されない場合は、何も出力せず、リターンコードを使用して、呼び出しシェルに代わりに必要な処理を実行させます。
grep -q -E 'extends[[:space:]]+SomethingSomething' FILENAME ||
echo "$FILENAME"
または、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 }
'
LinuxまたはCygwin(またはGNU grepを使用する他のシステム)では、再帰を使用できるためfind
、を使用する必要はありませんgrep
。
grep -R --include='*.java' -L -E 'extends[[:space:]]+SomethingSomething'
シェルがkshまたはbashまたはzshの場合、シェルにファイル名の一致を行わせることができます。bashでは、set -o globstar
最初に実行します(これをに入れることができます~/.bashrc
)。
grep -L -E 'extends[[:space:]]+SomethingSomething' **/*.java