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