컴퓨터는 컴퓨터입니다. 원하는 것을하는 대신에 말한 것을하고 있습니다.
grep -v "something something"
포함하지 않은 모든 행을 인쇄합니다 something something
. 예를 들어, 다음 세 가지 중 두 줄을 인쇄합니다.
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