find: "-a"가 "-o"보다 우선순위가 높다는 것은 무엇을 의미합니까? [복사]

find: "-a"가 "-o"보다 우선순위가 높다는 것은 무엇을 의미합니까? [복사]

gnu find의 매뉴얼 페이지에는 다음과 같은 내용이 나와 있습니다.

-a는 암시적으로(예: 두 테스트 사이에 명시적인 연산자가 없음) 또는 명시적으로 지정된 경우 -o보다 우선합니다. 이는
find . -name afile -o -name bfile -print
파일이 인쇄되지 않음을 의미합니다.

위의 표현은 다음과 같습니다.

find . -name afile -o -name bfile -a -print

내 질문은 이 표현이 어떻게 작동하는가입니다. 왜 afile인쇄되지 않습니까?

답변1

-and/연산자는 -a논리 연산자입니다.그리고운영자. 두 표현의 병치로 암시되므로 명시할 필요가 없습니다.

afile예, 사용할 때 인쇄 되지 않습니다find . -name afile -o -name bfile -a -print그리고연산자보다 우선순위가 높습니다.또는운영자 -or/ -o. 인쇄 하려면 다음 afile두 가지 옵션이 있습니다.

첫 번째 옵션:

@malo가 언급했듯이 GNU 및 BSD 버전의 Find 명령에서 괄호가 가장 높은 우선 순위를 갖기 때문에 실행하면 결과를 인쇄 find . \( -name afile -o -name bfile \) -a -print할 수 있습니다 .afile

두 번째 옵션:

옵션을 전달하지 않음으로써 -print. 따라서 그렇게 되는 이유는 find . -name afile -o -name bfile아무것도 더 높은 우선순위를 갖지 않기 때문입니다 -o.

답변2

다음보다 우선순위가 높으므로 괄호를 사용해야 합니다 -a.

find . \( -name afile -o -name bfile \) -a -print

관련 정보