grep 옵션의 완전히 반대 조합

grep 옵션의 완전히 반대 조합

나는 그랬다:grep -r -H -L txt ~

그리고grep -r -l -L txt ~

모든 파일이 나열되나요? 내가 얻는 출력이 매우 길기 때문입니다.

답변1

두 명령은 정확히 동일합니다. 둘 다 홈 디렉터리로 재귀하며 "txt" 패턴을 포함하지 않는 파일을 나열합니다.

출력이 동일하다는 것을 증명하려면 다음을 수행하십시오.

diff <(grep -r -H -L txt ~) <(grep -r -l -L txt ~)

좀 분해하자면..

grep -r -H -L

동일합니까?

grep -r -L

-H(인쇄 파일 이름)은 grep여러 파일과 관련된 호출을 의미합니다. -L지정된 패턴과 일치하지 않는 모든 파일을 나열하기 때문에 이것이 수행되는 작업입니다.

다음...

grep -r -l -L

동일합니까?

grep -r -L

이는 단순히 옵션이 충돌하기 때문입니다 -l. -L이 경우 마지막으로 발생한 플래그가 이전 충돌 플래그를 재정의합니다. (감사해요@don_crissti이것을 지적하십시오. )

따라서 실제로는 grep -r -L및 가 있습니다 grep -r -L.

관련 정보